アプリ版:「スタンプのみでお礼する」機能のリリースについて

教えてください。
C言語は、一通りマスターしております。
現在JAVAを勉強しております。
C言語で作成したシステムをJAVAに移植しようと思ったのですが、
下記のような定義があり、身近な書籍で確認したところ、参考に
なる資料がありませんでした。
このようにC言語で定義されたのをJAVAで実現する事は可能でしょうか?
これは、禁じ手なのでしょうか?
すみませんが、アドバイスお願いします。


(1)構造体を定義します。
typedef struct {
  int  iID;
  char  szSyainCode[ 12 ];
  char  szName[ 40 ];
  int  iage;
}Syain;

(2)定義した構造体を利用し、コンパイル時に初期化を行わせます。
static Syain tSyain[] = {
 { 1 ,"ABC001","鈴木",43},
 { 2 ,"ABC002","大木",23},
 {-1 ,"","",0}
}

(3)コンパイル

(4)実行

(5)プログラムを実行した時にこのテーブルを参照し、処理します。
int i;
for( i=0 ;; i++ ){
  /* 終端チェック */
  if( tSyain[i].iID==-1 ){
    break;
  }
      :

A 回答 (1件)

まず(1)はできます。

構造体の代わりにclassを使って、
フィールドをpublicにすればいいわけです。
(オブジェクト指向的にはあまりよい作法ではありませんが)

問題は(2)です。
Javaだと、このように、単純に要素を並べて初期化することはできません。
newを用いて、コンストラクタを起動しなければなりません。

Syain tSyain[] = {
  new Syain(1 ,"ABC001","鈴木",43),
  new Syain(2 ,"ABC002","大木",23)
};

のようにします。

コンパイル、実行は上の方式でできると思います。

Javaの配列は、配列長が入っているので、
終端チェックはそれを使った方がいいでしょう。

for(int i=0 ; i<tSyain.length; i++ ){
  /* 終端チェック不要 */
  ……
}
ただ、構造を変えたくないのであれば、IDによる終端チェックをしても
いいでしょう。
    • good
    • 0
この回答へのお礼

返事が遅くなりすみません。
構造化で学んできたため、オブジェクト指向の切り替えが
できていない状態です。

>(オブジェクト指向的にはあまりよい作法ではありませんが)
なるほど。禁じ手までいかなくても、やらない方法なのですね。
オブジェクト指向で実現する方法を勉強してみます。

ありがとうございました。

お礼日時:2003/03/16 02:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!