- ベストアンサー
配列で質問があります。
小さなプログラムを配列を作りました。 3個配列を指定しそのうち2つを返すという ようなプログラムです。 バグがでてしまいメソッドのところで出ます。 Hairetu.java:9: ';' がありません。 int[] hairetu2(int box[0],int box[1]){ エラー1 作成したプログラムは以下です。メソッドの定義など見てみたのですがなぜバグが出るのかよくわかりません。教えて下さいませんか。 class Hairetu{ public static void main (String args[]){ int[] box = new int [3]; box [0] =1; box [1] =2; box [2] =3; int[] hairetu2(int box[0],int box[1]){ return box; } hairetu2 = hairetu2(box[0],box[1]); System.out.println(box); } } ^
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
配列の長さを返すだけなら、 class Hairetu{ public static void main (String args[]){ int[] box = new int[3]; box [0] =1; box [1] =2; box [2] =3; int hairetu_length = Hairetu2(box[0], box[1]); System.out.println(hairetu_length); } public static int Hairetu2(int first,int next){ int[] another = { first,next}; return another.length; } }
その他の回答 (3)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
意味がよくわからんけど、おそらく、こんな感じ? ---------------------------------------------------------------- class Hairetu{ public static int[] hairetu2(int[] array, int el1, int el2){ //配列と、インデックス2つで指定された内容の配列を返す int[] select = new int[2]; select[0]=array[el1];//エラーを起こすかも! select[1]=array[el2]; return select; } public static void main (String args[]){ int[] box = new int[3]; box[0] =1; box[1] =2; box[2] =3; int[] hairetu2 = hairetu2(box, 0, 1);//box[0],box[1]を内容とする配列を返す for(int v : hairetu2){//返された配列の中味の点検 System.out.println(v); } } }
補足
ご親切にすごい詳しく本当にありがとうございます。質問の仕方がへたくそで申し訳ないです。返却値に配列の大きさを表示させたいのです。この場合「2」と表示させたくBULUEPYさんのコードを少しいじって返却値を返すプログラムを今作ってみましたが エラーが出てとれません。わかる方、どうか 教えていただけませんか。 class Hairetu2{ public static int[] hairetu2(int[] array, int el1, int el2){ //配列と、インデックス2つで指定された内容の配列を返す int[] select = new int[2]; if(select.length==0){ select[0]=array[el1]; select[1]=array[el2]; // System.out.println(select.length); // ここで2つの配列の大きさを表示します。 return select; } else { return select.length ; //現在ここでエラーが起こります。 } /** c:\myweb>javac Hairetu2.java Hairetu2.java:13: 互換性のない型 検出値 : int 期待値 : int[] */ } public static void main (String args[]){ int[] box = new int[3]; box[0] =1; box[1] =2; box[2] =3; int[] hairetu2 = hairetu2(box, 0, 1);//box[0],box[1]を内容とする配列を返す for(int v : hairetu2){//返された配列の中味の点検 System.out.println(v); } } }
- kscKane
- ベストアンサー率62% (18/29)
mainメソッドの中で"hairetu2"メソッドを定義しているのがよくないのではないでしょうか。 "hairetu2"メソッドの定義を、メインメソッドの外に出してみてはいかがでしょうか。 その先もいくつかエラーが出てしまいますが、まずはメソッドの定義場所の修正から始めましょう。
お礼
メソッドの位置が悪いのですね!! 先ほどわざとアドバイス通りだしてみたら本当に悪いみたいです。ご親切に教えていただき すいません。うれしいです。
補足
申し訳ないです。 コンパイラエラーがどうしてもとれません。 立て続けですがどうかご回答下さい。 c:\myweb>javac Hairetu.java Hairetu.java:2: ']' がありません。 int [] hairetu2(int box[0],int box[1] ){ ^ Hairetu.java:6: ')' がありません。 } ^ どうかアドバイス下さい。 class Hairetu3{ int [] hairetu2(int box[0],int box[1] ){ return box; } } class Hairetu{ public static void main (String args[]){ int[] box = new int[3]; int [] hairetu2 = 0; box [0] =1; box [1] =2; box [2] =3; Hairetu3 a = new Hairetu3(); box = hairetu2(1,2); System.out.println(box); } }
- chie65536
- ベストアンサー率41% (2512/6032)
>バグがでてしまいメソッドのところで出ます。 >バグが出るのかよくわかりません。 「バグ」とは「実行した際に、予想もしていなかった動作をしてしまう不具合」の事です。 たとえば「"あいう"と表示される筈が"アイウ"と表示される」など。 質問者さんが出してるのは、バグではなくて「コンパイルエラー」です。バグってのは「実行してみて初めて出せる物」なので、実行する以前の段階では絶対に出ません。 因みに、一番最後に「;」を足してみたらどうなりますか?
お礼
class Hairetu{ public static void main (String args[]){ int[] box = new int[3]; box [0] =1; box [1] =2; box [2] =3; int[] hairetu2;(int box[0],int box[1]){ return box; } hairetu2 = hairetu2(box[0],box[1]); System.out.println(box); } } とわざと書いたところ!なるほど!!c:\myweb>javac Hairetu.java Hairetu.java:9: ')' がありません。 int[] hairetu2;(int box[0],int box[1]){ ^ Hairetu.java:13: 式の開始が不正です。 hairetu2 = hairetu2(box[0],box[1]); ^ Hairetu.java:9: 文ではありません。 int[] hairetu2;(int box[0],int box[1]){ ^ と3個のエラーが出ました。 どうやらメソッドの位置が悪いみたいです。 やり直してみます。バグの意味がわかりやすく 教えていただきありがとうございます。 大変に参考になりました。
お礼
本当にありがとうございます!! まさしくこのコードを知りたかったんです。 コードの英語の名前もわかりやすくて追いやすかった です。