こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

コンパイルできません。

public class test17{
double[] ary;

/**
*実数型の配列を引数にしたコンストラクタ
*/
public test17(double[] a){

}

/**
*要素の合計を求めるメソッド
*/
public double sum(){

}

/**
*要素の平均を求めるメソッド
*/
public double average(){

}
/**
*要素の最大値を求めるメソッド
*/
public double max(){
}

/**
*要素の最小値を求めるメソッド
*/
public double min(){

}
/**
*値を要素に持っているかどうかを確認するメソッド
*/
public boolean hasElement(double d){

}
}
kouzou@GD348ZZD9:/WORK$ javac test17.java
test17.java:16: エラー: return文が指定されていません
}
^
test17.java:23: エラー: return文が指定されていません
}
^
test17.java:28: エラー: return文が指定されていません
}
^
test17.java:35: エラー: return文が指定されていません
}
^
test17.java:41: エラー: return文が指定されていません
}
^
エラー5個

投稿日時 - 2018-08-25 05:16:40

QNo.9530643

困ってます

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

推測で回答します(もう少しプログラムで何をしたいのか説明したほうが良いでしょう)。
下記プログラムは「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;
}

}

投稿日時 - 2018-08-25 10:22:46

お礼

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

投稿日時 - 2018-08-26 12:54:10

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(8)

ANo.8

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

投稿日時 - 2018-08-26 12:26:24

お礼

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

投稿日時 - 2018-08-26 12:48:30

ANo.7

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

投稿日時 - 2018-08-26 04:01:25

お礼

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

投稿日時 - 2018-08-26 12:50:05

ANo.6

>回答No.2 amanojaku1

>ary = a; // ポインターを代入してるだけなので配列は1つしかない

↑ちなみに、このようにポインタだけをコピーしている場合を「Shallow Copy(シャロー・コピー)」と言います。
ちなみに、インスタンス自体を複製する場合を「Deep Copy(ディープ・コピー)」と言います。
とりあえず、参照型は「浅い(Shallow)」コピーと「深い(Deep)」コピーの2種類あると思って下さい。

投稿日時 - 2018-08-26 02:43:39

お礼

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

投稿日時 - 2018-08-26 12:51:16

ANo.5

Javaのデータ型にはプリミティブ型とオブジェクト型があります。
オブジェクト型は参照型となっており、ポインタによりインスタンスが参照されています。
プリミティブ型は下記参照。

【Java】基本データ型(プリミティブ型)について
https://okwave.jp/qa/q9530643.html



>回答No.2 amanojaku1

>ary = a; // ポインターを代入してるだけなので配列は1つしかない

Javaでは配列もオブジェクト型(参照型)です、ポインタにより配列インスタンスが参照されています。
「ary = a;」のように代入した場合、変数aポインタと変数aryポインタは1つの配列インスタンスを参照しています(添付画像の下方の画像の状態)。

投稿日時 - 2018-08-25 23:42:42

お礼

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

投稿日時 - 2018-08-26 00:03:33

ANo.4

>回答No.3 amanojaku1

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

投稿日時 - 2018-08-25 10:43:48

お礼

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

投稿日時 - 2018-08-26 12:52:03

ANo.3

>回答No.2 amanojaku1

勉強したいならプログラムで何をしているのか考えて下さい。

投稿日時 - 2018-08-25 10:31:07

お礼

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

投稿日時 - 2018-08-26 12:52:22

ANo.1

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

エラーメッセージを理解することも重要なことです。

投稿日時 - 2018-08-25 07:32:05

お礼

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

投稿日時 - 2018-08-25 08:12:56

あなたにオススメの質問