• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:コンパイルできません。)

Javaプログラムのコンパイルエラーを修正する方法

このQ&Aのポイント
  • Javaのプログラムをコンパイルする際にエラーが発生しました。
  • コンパイルエラーの原因は、return文が指定されていないことです。
  • エラーが発生した箇所を修正し、プログラムを正しくコンパイルできるようにしてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

推測で回答します(もう少しプログラムで何をしたいのか説明したほうが良いでしょう)。 下記プログラムは「main()」メソッドが存在するので、下記プログラムとパラメータだけで実行できます(パラメータがないとエラーになります)。 とりあえずパラメータは「1 2 3 4 5」としています。 【実行結果】 sum()=15.0 average()=3.0 max()=5.0 min()=1.0 hasElement()=true 【プログラム】 public class test17 { double[] ary; public static void main(String[] args){ double[] dargs = new double[args.length]; // 通常のfor文 for(int i = 0; i<args.length; i++){ dargs[i] = Double.parseDouble(args[i]); } test17 t = new test17(dargs); } /** *実数型の配列を引数にしたコンストラクタ */ public test17(double[] a){ ary = a; // ポインターを代入してるだけなので配列は1つしかない System.out.println("sum()="+sum()); System.out.println("average()="+average()); System.out.println("max()="+max()); System.out.println("min()="+min()); System.out.println("hasElement()="+hasElement(3.0)); //↑とりあえず「hasElement(~)」の引数に「3.0」を設定している } /** *要素の合計を求めるメソッド */ public double sum(){ double s = 0.0; // 拡張for文 for(double d : ary){ s += d; } return s; } /** *要素の平均を求めるメソッド */ public double average(){ return sum()/(double)ary.length; } /** *要素の最大値を求めるメソッド */ public double max(){ double m = -Double.MAX_VALUE; // 拡張for文 for(double d : ary){ if(m<d){m=d;} } return m; } /** *要素の最小値を求めるメソッド */ public double min(){ double m =Double.MAX_VALUE; // 拡張for文 for(double d : ary){ if(d<m){m=d;} } return m; } /** *値を要素に持っているかどうかを確認するメソッド */ public boolean hasElement(double d){ boolean b = false; // 拡張for文 for(double f : ary){ if(f==d){b = true; break;} } return b; } }

jump7799
質問者

お礼

ご回答誠に有難うございます。

その他の回答 (7)

回答No.8

多次元配列とは2次元以上の配列。 配列を棚で例えれれば、添付画像の向かって左が1次元配列、向かって右が2次元配列。

jump7799
質問者

お礼

ご回答誠に有難うございます。

回答No.7

1次元配列なら下記「Arrays.copyOf(~)」で「深い(Deep)」コピーになるようです。 ただし「Arrays.copyOf(~)」で多次元配列を指定すると「浅い(Shallow)」コピーになるようなので、多次元配列で「深い(Deep)」コピーする場合には工夫が必要。 String[] a1s1 = {"a","b","c",}; String[] a1s2; a1s2 = Arrays.copyOf(a1s1,a1s1.length);

jump7799
質問者

お礼

ご回答誠に有難うございます。

回答No.6

>回答No.2 amanojaku1 >ary = a; // ポインターを代入してるだけなので配列は1つしかない ↑ちなみに、このようにポインタだけをコピーしている場合を「Shallow Copy(シャロー・コピー)」と言います。 ちなみに、インスタンス自体を複製する場合を「Deep Copy(ディープ・コピー)」と言います。 とりあえず、参照型は「浅い(Shallow)」コピーと「深い(Deep)」コピーの2種類あると思って下さい。

jump7799
質問者

お礼

ご回答誠に有難うございます。

回答No.5

Javaのデータ型にはプリミティブ型とオブジェクト型があります。 オブジェクト型は参照型となっており、ポインタによりインスタンスが参照されています。 プリミティブ型は下記参照。 【Java】基本データ型(プリミティブ型)について https://okwave.jp/qa/q9530643.html >回答No.2 amanojaku1 >ary = a; // ポインターを代入してるだけなので配列は1つしかない Javaでは配列もオブジェクト型(参照型)です、ポインタにより配列インスタンスが参照されています。 「ary = a;」のように代入した場合、変数aポインタと変数aryポインタは1つの配列インスタンスを参照しています(添付画像の下方の画像の状態)。

jump7799
質問者

お礼

ご回答誠に有難うございます。

回答No.4

>回答No.3 amanojaku1 メソッドごとに何をしているのか考えて下さい。 とりあえず「main()」メソッドで何をしているのか考えて下さい。

jump7799
質問者

お礼

ご回答誠に有難うございます。

回答No.3

>回答No.2 amanojaku1 勉強したいならプログラムで何をしているのか考えて下さい。

jump7799
質問者

お礼

ご回答誠に有難うございます。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.1

>エラー5個 全て「return文が指定されていません」なのでエラーの行または直前の行へreturn文を追記すれば良いでしょう。 尚、41行目のreturnの値はtrueまたはfalseにする必要があるでしょう。 他は数値で良いと思います。 エラーメッセージを理解することも重要なことです。

jump7799
質問者

お礼

ご回答誠にありがとうございました。

関連するQ&A