QA@IT

javaのプログラミングに関する質問です。

2748 PV

class ClassAdd08 {
public static void main(String[] args) {

    // **************************** ① **********************************
    int len = args.length;
    int[] array = new int[len];
    for (int i = 0; i < len; i++) {
        array[i] = Integer.parseInt(args[i]);
    }

    // **************************** ① **********************************

    // **************************** ② **********************************
    System.out.println("受け取った引数:" + len + "個");
    for (int i = 0; i < len; i++) {
        System.out.println((i + 1) + "個目の数:" + array[i]);
    }
    // **************************** ② **********************************
}

}

上記のプログラムを、①と②の部分をそれぞれ変換クラスと表示クラスに分けて表示させよ、という問題で
以下のように書き直しているのですが上手くいきません。変換クラスをインスタンス化した後に変換メソッドを呼び出し、変換メソッド内で得た値をメインメソッドに戻し、その引数を表示メソッドの引数に与えて表示させる。。。という一定の流れは理解出来るのですが、表示クラス内のlenが悉く「シンボルが見当たらない」というエラー表記になってしまいます。変数の宣言をしていないので当たり前なのは分かりますが、どの部分で宣言をすべきなのか、そもそもこの考え方は合っているのか?と、自分で考え出したらキリが無くなってしまいました。どなたかお知恵をお貸しください。よろしくお願い致します。

class ClassAdd08 {
public static void main(String[] args) {

//変換クラスのインスタンス化
Henkan subA = new Henkan();
//変換メソッド呼び出し
    int[] array =subA.henkan(args);

//表示クラスのインスタンス化
Hyouji subB = new Hyouji();
//表示メソッドの呼び出し
    subB.hyouji(array);
}

}
//変換クラス
class Henkan {
public static int henkan(String[] num) {//変換メソッド
// **************************** ① **********************************
int len = args.length;
int[] array = new int[len];
for (int i = 0; i < len; i++) {
array[i] = Integer.parseInt(args[i]);
return i;//値を返す
}

    // **************************** ① **********************************
}

}
//表示クラス
class Hyouji {
public static void hyouji(int[] num) {//表示メソッド
// **************************** ② **********************************
System.out.println("受け取った引数:" + len + "個");
for (int i = 0; i < len; i++) {
System.out.println((i + 1) + "個目の数:" + array[i]);
}
// **************************** ② **********************************
}
}

回答

別スレになっていたので、こちらに書かせていただきます。
00_chelseaさんの元ソース流用します。
勉強中だと思いましたので、回答を書くのもどうかなとは思いましたが
ここまでできているのならいいかなと...

class ClassAdd08 {
public static void main(String[] args) {

     //変換クラスのインスタンス化
      Henkan subA = new Henkan();

      //変換メソッド呼び出し
       int[] array;
  array = subA.henkan(args);  //戻り値が配列となります!

   //表示クラスのインスタンス化
    Hyouji subB = new Hyouji();

    //表示メソッドの呼び出し
        subB.hyouji(array);
}

}
//変換クラス
class Henkan {
   public static int[] henkan(String[] args) {//変換メソッド
//最初のうちは何が渡ってきたのかわからなくなるので名前を一緒にしましょ!
// num → args

    // **************************** ① **********************************
    int len = args.length;
    int[] array = new int[len];

    for (int i = 0; i < len; i++) {
        array[i] = Integer.parseInt(args[i]);
    }

    // **************************** ① **********************************
    return array;//値を返す
}

}
//表示クラス
class Hyouji {
public static void hyouji(int[] array) {//表示メソッド
//最初のうちは何が渡ってきたのかわからなくなるので名前を一緒にしましょ!
// num → array

int len = array.length; //配列の大きさをとる

    // **************************** ② **********************************
    System.out.println("受け取った引数:" + len + "個");

    for (int i = 0; i < len; i++) {
        System.out.println((i + 1) + "個目の数:" + array[i]);
    }
    // **************************** ② **********************************
}

}

編集 履歴 (0)
  • akira_onozuk様、回答ありがとう御座います。無事に問題を解くことが出来ました。重ねて感謝申し上げます。 -
  • 問題の解決に役立った場合は、回答をベストアンサーに選ぶようにお願いします。回答者への感謝の印にもなります。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。