配列を使って最大値・最小値・平均値を求めるプログラムを作りたいのですが、うまく出力結果が出ません。(コンパイルは成功)
java
1import java.util.Scanner; 2public class MinMaxAve{ 3 public static void main(String[] args){ 4 System.out.println("数字を入力してください"); 5 Scanner kbd=new Scanner(System.in); 6 int[] data=new int[1000]; 7 int min,max;//(左から)最小値・最大値 8 double ave;//平均値 9 int n=0; 10 while(kbd.hasNext()){//hasNext()はリストに要素がなくなるまでtrueを返す 11 data[n]=kbd.nextInt(); 12 n++; 13 } 14 if(n==0){ 15 System.out.println("データがありません"); 16 }else{ 17 min=data[0]; 18 for(int i=1;i<n;i++){ 19 if(data[i]<min){ 20 min=data[i]; 21 } 22 System.out.printf("min=%d\n",min); 23 } 24 } 25 if(n==0){ 26 System.out.println("データがありません"); 27 }else{ 28 max=data[0]; 29 for(int x=1;x>n;x++){ 30 if(data[x]>max){ 31 max=data[x]; 32 } 33 System.out.printf("max=%d\n",max); 34 } 35 } 36 if(n==0){ 37 System.out.println("データがありません"); 38 }else{ 39 int sum=0;//入力した要素(数字)の合計 40 for(int y=0;y<data.length;y++){ 41 sum=data[y]; 42 } 43 ave=sum/data.length; 44 System.out.printf("ave=%d\n",ave); 45 } 46 } 47} 48
実行結果
数字を入力してください
10
20
15
5
min=10
min=10
min=5
ave=Exception in thread "main" java.util.IllegalFormatConversionException: d != java.lang.Double
at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4302)
at java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2793)
at java.util.Formatter$FormatSpecifier.print(Formatter.java:2747)
at java.util.Formatter.format(Formatter.java:2520)
at java.io.PrintStream.format(PrintStream.java:970)
at java.io.PrintStream.printf(PrintStream.java:871)
at MinMaxAve.main(MinMaxAve.java:46)
もう最後の方はよく分からず、if文を3回繰り返してしまいました。
どこをどう直せば良いのでしょうか。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/09/08 05:10
2017/09/08 07:37