• ベストアンサー

配列で最大・最小値を求める

import java.io.*; class Prog10_2 { public static void main(String args[])throws IOException { System.out.println("10個の整数を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num[] = new int[10]; for(int i=0; i<num.length; i++){ String str = br.readLine(); int tmp = Integer.parseInt(str); num[i] = tmp; } int max = 0; int min = 0; for(int i=0; i<num.length; i++){ if(max < num[i]){ max = num[i]; } if(min > num[i]){ min = num[i]; } } System.out.println("最大値は"+max+"で、最小値は"+min+"です。"); } }   というコマンドを実行すると、最大値はちゃんと表示されるのですが、 最小値はいつも"0"しか表示されません。どこを修正すればいいのでしょうか? どなたか分かる方いらっしゃいましたら、よろしくお願いします。

  • elmes
  • お礼率59% (59/100)
  • Java
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>int min = 0; を int min=num[0]; にするか int min=Integer.MAX_VALUE; にする

elmes
質問者

お礼

無事プログラムが実行できました☆  ありがとうございました。

その他の回答 (1)

  • chamiguri
  • ベストアンサー率17% (3/17)
回答No.1

そう言う処理をする場合は、普通は2重ループで順番に比べていきます!! また、そのプログラムでもマイナスの数値を入力すれば最小はちゃんと表示されるはずですよ★

elmes
質問者

お礼

無事解決できました☆ ありがとうございました。

関連するQ&A

  • 入力された入力値と最大値、最小値を表示させるプログラムで、最大値と最小

    入力された入力値と最大値、最小値を表示させるプログラムで、最大値と最小値のプログラムを下記に作成してみたら最小値が0になりました。そして、もう一つ繰り返し文を作ってみたら、最大値・最小値がうまく表示されました。この違いはどうしてですか?教えてください。 import java.io.*; class Hairetu1 { public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print("データはいくつですか?"); String str = br.readLine(); int num = Integer.parseInt(str); int a[]=new int[num]; int i; int max=0; int min=a[0]; for(i=0; i<a.length; i++){ System.out.print((i+1)+"番目は?"); str = br.readLine(); int tmp = Integer.parseInt(str); a[i] = tmp; if(max<tmp){ max=tmp; } if(min>tmp){ min=tmp; } } System.out.println("入力した値は"+test.length); System.out.println("最大は"+max); System.out.println("最小は"+min); } }

    • ベストアンサー
    • Java
  • 最大値と最小値の求め方

    以下はコマンドライン引数で任意の数の整数を受け取って、合計・平均・最大・最小を求めようとしたソースです。 しかし、実行したら最大値と最小値が正しく出ませんでした。 if文が間違っているのかもしれないと思ったのですが、はっきりと『ここが間違っている』という場所が分かりません。 どうかご指摘お願いします。 class Choco { public static void main (String[] args) { int i; int sum = 0; int max; int min; for ( i=0; i<args.length; i++) sum += Integer.parseInt(args[i]); double ave = sum/args.length; max = args.length; min = args.length; if (args.length>max){ max = args.length; } if (args.length<min){ min = args.length; } System.out.println("合計は" + sum + "です。"); System.out.println("平均は" + ave + "です。"); System.out.println("最大値は" + max + "です。"); System.out.println("最小値は" + min + "です。"); } }

    • ベストアンサー
    • Java
  • 入力データ数を入力して、その数だけ整数値を入力し配列を格納した後、入力

    入力データ数を入力して、その数だけ整数値を入力し配列を格納した後、入力した値を横に表示するプログラムを下記に作成したのですが、思う通りに表示されません。初期化しても最後の値になるし、なぜでしょうか? import java.io.*; class Hairetu1 { public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print("データはいくつですか?"); String str = br.readLine(); int num = Integer.parseInt(str); int a[]=new int[num]; int i,tmp=0; for(i=0; i<a.length; i++){ System.out.print((i+1)+"番目は?"); str = br.readLine(); tmp = Integer.parseInt(str); a[i] = tmp; } for(i=0; i<a.length; i++){ System.out.print("入力した値は"+tmp+"\t"); }

    • ベストアンサー
    • Java
  • クラスのフィールドの値を配列に代入する方法

    フィールドの値を代入したいのですが、 java.lang.ArrayIndexOutOfBoundsException というエラーが出てしまい、どうすればいいのかわかりません。 どのように対処すればいいのでしょうか? class Car { String carname; int height; int width; int length; } class public static void main(String[] args) throw IOException { Car car[]; car = new Car[5]; System.out.println("車の情報を入力してください。"); BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in); for(int i=0; i<5; i++){ car[i] = new Car(); System.out.println(i+1 + "台目の車の名前を入力してください。"); String str1 = br1.readLine(); System.out.println("車の高さを入力してください。"); String str2 = br1.readLine(); System.out.println("車の幅を入力してください。"); String str3 = br1.readLine(); System.out.println("車の長さを入力してください。"); String str4 = br1.readLine(); int h1 = Integer.parseInt(str2); int w1 = Integer.parseInt(str3); int l1 = Integer.parseInt(str4); car[i].carname = str1; car[i].height = h1; car[i].weith =w1; car[i].length =l1; } for(int i=0; i<5; i++){ int c_h[] = new int[5]; c_h[i] = car[i].height; } } よろしくお願いします。

    • ベストアンサー
    • Java
  • Java trimの設定について

    Java trimの設定についてお伺いいたします。 最高気温と最低気温を表示することができずに困っております。trimをどのように設定すれば良いかご教授お願いします。 以下、ソースを記載します。 import java.io.*; public class Sample { public static void main(String[] args) { try{ BufferedReader br = new BufferedReader(new FileReader("kion.txt")); System.out.println("気温データ出力"); int test[] = new int[4]; String str; for(int i=0;i<test.length;i++){ str = br.readLine(); } int max = 0; int min = 0; for(int i=0;i<test.length;i++){ if(max < test[i]) max = test[i]; if(min > test[i]) min = test[i]; System.out.println(test[i]); } System.out.println("最高気温" + max + "です。"); System.out.println("最低気温" + min + "です。"); br.close(); } catch(IOException e){ System.out.println("入出力エラーです"); } } } また「kion.txt]は 東京 30.2 18.5 神奈川 34.2 18.5 埼玉 29.8 16.4 千葉 27.5 14.7 と作成しました。 これを 最高気温 神奈川 34.2 最低気温 千葉  14.7 と表示したいのですが、現在は「0 0 0 0」と表示するだけです。 何卒、よろしくお願い致します。

  • javaについて・・・

    このように出力されるプログラムを考えています ↓ 受験者人数を入力してください 3 3人分の点数を入力してください 50 80 20 1人目の点数は50です 2人目の点数は80です 3人目の点数は20です 最高点は80です っという感じのプログラムを考えています。 そしていまここまでプログラムを書いたのはいいのですが 感じんの最高点が表示されません・・・ import java.io.*; class test{ public static void main(String[] args) throws IOException{ System.out.println("テストの受験者数を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str =br.readLine(); int num = Integer.parseInt(str); int test[] = new int[num]; int max=0; System.out.println(test.length +"人の点数を入力してください"); for(int i=0; i<num; i++){ String str1 = br.readLine(); test[i] = Integer.parseInt(str1); } for(int i=0; j<num; i++){ System.out.println((i+1)+"番目の人の点数は"+ test[i]+"です。"); if(test[i]>max){ max=test[i]; } } System.out.println("最高点は" +max+ "です。"); } } どこをどのように直せば最高点が表示されるようになるでしょうか? ご指摘おねがいします。

  • 今勉強中のjavaで。わからないことがあります。

    import java.io.*; class Ireru { public static void main(String args[]) throws IOException{ System.out.println("あなたは何歳ですか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); int num =Integer.parseInt(str1); System.out.println("あなたは" + num +"歳です。"); } } ------------------------------- import java.io.*; class Ireru { public static void main(String args[]) throws IOException{ System.out.println("あなたは何歳ですか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); System.out.println("あなたは" + str1 +"歳です。"); } } なぜ下では悪いのですか?なぜnum をつかないといけないかがわかりません。正確には str1とnumの違いがわからなくて困っています。何が混乱の原因ですか?

    • ベストアンサー
    • Java
  • コンパイル時のエラーについて

    Java超初心者の者です。 下記のコードどこか間違っていますか? class Sample4 { public static void main(String args[]) throws IOException { System.out.println("いくつまでの合計を求めますか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int num = Integer.parseInt(str); int sum = 0; for(int i=1; i<=num; i++){ sum += i; } System.out.println("1から" + num + "までの合計は"      + sum + "です。"); } } テキスト通りに入力したつもりなのに何度確認して入力し直しても、 『'class'または'interface'がありません。』というエラーが 出てしまうのですが・・・ 色々ネットで検索して調べたのですが、分らなくて。

    • ベストアンサー
    • Java
  • 多次元配列について

    このような課題が出ました。  複数人の名前を入力してから  3教科の点数を全員分入力し、  各教科の平均点と、最高点と取った人の名前を表示せよ。 頑張って途中までやったんですが、ここから先に進めません。 どういうふうにやればいいんでしょうか? import java.io.*; class K203 {  public static void main(String args[]) throws IOException{   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));   System.out.print("人数を入力して下さい:");   String str = br.readLine();   int ninzuu = Integer.parseInt(str);   String name[] = new String[ninzuu];   for(int i=0; i<ninzuu; i++){    System.out.print(i+1+"人目の名前を入力してください:");    name[i] = br.readLine();   }   String subject[] = {"国語","数学","英語"};   String tensuu[][] = new String[subject.length][ninzuu];   System.out.println("点数を入力してください");   for(int i=0; i<subject.length; i++){    for(int s=0; s<ninzuu; s++){     System.out.print(name[i]+subject[]);     tensuu[i][s] = br.readLine();    }   }  } }

  • プログラミングお願いします(JAVA)

    クラスCalcに、次の5つのメソッドを作成しなさい。メインメソッドでオブジェクトを生成し、メソッドを呼び出して、実行しなさい。 二つの整数を引数にもち、その和を戻り値とする wa (メソッド名はwaであることに注意!以下同様。) 二つの整数を引数にもち、その差を戻り値とする sa 二つの整数を引数にもち、その積を戻り値とする kake 二つの整数を引数にもち、その大きい方を戻り値とする max 二つの整数を引数にもち、その小さい方を戻り値とする min した自分が実行したプログラムです。ここまでしかわからないので簡単にお願いします class Calc { int wa; int sa; int kake; int max; int min; int num; int num1; int getWa() { System.out.println("和を調べました"); return num+num1; } int getSa() { System.out.println("差を調べました"); return sa; } int getKake() { System.out.println("積を調べました"); return kake; } int geMax() { System.out.println("大きいほうを調べました"); return max; } int getMin() { System.out.println("小さいほうを調べました"); return min; } void setwasakakemaxmin(int w,int s ,int k,int ma,int mi) { wa=w; sa=s; kake =k; max=ma; min=mi; System.out.println("和を"+wa+"差を"+sa+"積を"+kake+"大きいほうを"+max+"小さいほうを"+min+"にしました"); } } class Sample3 { public static void main(String[] args)throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Calc car1=new Calc(); String str=br.readLine(); int num = Integer.parseInt(str); String str1=br.readLine(); int num1 = Integer.parseInt(str1); int wa=num+num1; int wa =car1.getWa(); Calc car1 =new Calc(); car1.setWaSaKakeMaxMin(1,2); int wa =car1.getWa(); int sa =car1.getSa(); int kake=car1.getKake(); int max =car1.getMax(); int min=car1.getMin(); System.out.println("Birthdayを調べたところ"); System.out.println("和は"+wa+"差"+sa+"積は"+kake+"大きいほうは"+max+"小さいほうは"+min+"でした"); } }

専門家に質問してみよう