0

私は現在、ユーザーが10個の数字を入力する必要があるプログラムを作成しています。そうすると、出力は最大の数値と最小の数値になります。コードに問題がありますが、見つかりませんでした。

int highest=0, lowest=0, num=0;
Scanner scan = new Scanner(System.in);

for (int i=0; i<10; i++) {
    System.out.print("Enter a number:");
    num = scan.nextInt();
}

if (num > highest) {           
    highest = num;
}         
else if(num < lowest) {             
    lowest = num;
}

System.out.println("Highest number is: " + highest);
System.out.println("Lowest number is: " + lowest);
4

4 に答える 4

11

別の方法で値を初期化します。

int highest = Integer.MIN_VALUE;
int lowest = Integer.MAX_VALUE;

両方をゼロに初期化すると、ゼロより下の「最高」値、またはゼロより上の「最低」値が発生することはありません。

于 2012-05-14T07:40:23.280 に答える
6

if2つの条件をループに入れる必要がありforます。そうしないと、最後の数値のみが比較されます。また、最低値は0に設定するのではなく、Integer.MAX_VALUEに設定する必要があります。

于 2012-05-14T07:42:11.623 に答える
3

初期化とロジックにいくつかの問題があります。

int highest=Math.MIN_VALUE;
int lowest=Math.MAX_VALUE;
int num=0;
Scanner scan = new Scanner(System.in);


for(int i=0; i<10; i++){

   System.out.print("Enter a number:");
   num = scan.nextInt();
   if (num > highest){

    highest = num;
   }

   if(num < lowest){

    lowest = num;
   }

}



   System.out.println("Highest number is: " + highest);
   System.out.println("Lowest number is: " + lowest);

ifまた、ではなく2つの条件を使用する必要がありますelse if。数字が1つしかない場合は、highest入力した数字と同じようなものになりますが、lowestそれでも。に等しい可能性がありますMath.MAX_VALUE。これは混乱を引き起こす可能性があります。

于 2012-05-14T07:44:38.483 に答える
1

あなたは暗黙のうちに最低と最大が0であると仮定しています、それは今の場合かもしれません、このコードスニペットを試してください。

class Main{
        public static void main(String args[]){
                int highest=0, lowest=0, num=0;
                Scanner scan = new Scanner(System.in);
                highest = lowest = scan.nextInt();
                for(int i=1; i<10; i++){
                       System.out.print("Enter a number:");
                       num = scan.nextInt();
                       if (num > highest){
                           highest = num;
                       }
                       if(num < lowest){
                           lowest = num;
                    }
                    System.out.println("Highest number is: " + highest);
                    System.out.println("Lowest number is: " + lowest);
               }
        }
}
于 2012-05-14T07:49:23.490 に答える