0

このコードから最大限の価値を引き出す必要がありますが、それは本当に厄介です。誰にも何か提案がありますか?

import java.util.Scanner;
public class Test{
    public static void main(String args[])
    {
        Scanner scan = new Scanner(System.in);

         final int sentinel = 0;
         int number;
         int maxval = 0;
         int count = 0;

         System.out.println ("Enter a number: ");

         number = scan.nextInt();
         while (number != sentinel)
         {
            count++;
            System.out.println("Enter another number");
            number = scan.nextInt();
            maxval = number;
         }

         if (number > maxval)
         {
            maxval = number;
            System.out.println ("The max value is " + maxval);
         }
    }
}
4

2 に答える 2

1

maxval新しい番号を取得するたびに変数を上書きします。あなたはこのようなことをしなければなりません

 while (number != sentinel)
 {
     count++;
     System.out.println("Enter another number");
     number = scan.nextInt();
     if (number > maxval && number != sentinel) //So you don't overwrite it when you get the sentinel character
        maxval = number;
 }
 System.out.println ("The max value is " + maxval);
于 2012-04-06T01:30:14.170 に答える
0

これを試してみてください。少し簡単になり、コードの主な問題が修正されます。比較number > maxval メインループ内にある必要があります。

    Scanner scan = new Scanner(System.in);

    final int sentinel = 0;
    int maxval = 0;
    int number = 0;

    do {
        System.out.print("Enter a number: ");
        number = scan.nextInt();
        if (number > maxval)
            maxval = number;
    } while (number != sentinel);

    System.out.println("The max value is " + maxval);
于 2012-04-06T01:34:24.820 に答える