0

私は、ユーザーに値を入力するように求めるコードを書きました。センチネル値は -99 で、最大値と最小値を表示しました。動作していましたが、最小値として -99 が表示されました。それで、最小値に && != -99 を入れていじりましたが、無限ループが発生したので、そのコードを取り出しました。しかし、重要なものを削除したに違いありません。なぜなら、今では最大と最小が得られず、無限ループに陥るだけだからです。

いくつかの指針を教えてください。

これが私のコードです。

public class Practice
{
    public static void main(String[] args)
    {
        int smallest = 0; int largest = 0; int integer;

        // Create a Scanner object for keyboard input.
        Scanner input = new Scanner(System.in);

        System.out.println("Enter an integer: ");
        System.out.println("Enter -99 when finished.");
        System.out.println();

        int n = input.nextInt();
        integer = input.nextInt();
        smallest = integer; 

        while (integer != -99)
        {
            for(int i = 2; i < n; i++)
            {
                integer = input.nextInt();
                if(integer > largest)
                {
                    largest = integer;
                }
                if(integer < smallest)
                {
                    smallest = integer;
                }
            }
        }
        System.out.println("The largest number is:" + largest);
        System.out.println("The smallest number is : "  + smallest);
    }
}
4

3 に答える 3

0

これにより、常に 0 の値を返す min answer の問題が解消されます。

// Import all required packages
import java.util.Scanner;


public class Problem10
{
    public static void main(String[] args)
    {
        // I'm breaking these up to be a little more readable
        int smallest = 999999999;
        int largest = 0;
        // let's rename this something... not integer
        int userInt;

        // Create a Scanner object for keyboard input.
        Scanner input = new Scanner(System.in);

        // Let's make the prompt a little more descriptive
        System.out.println("Enter some integers: ");
        System.out.println("Enter -99 when finished.");
        System.out.println();

        // Let's get rid of all these other variables and just get userInt
        userInt = input.nextInt();

        // Assuming we want to exit if the first number they enter is -99 we'll
        //  test before doing anything
        while (userInt != -99)
        {   
            if(userInt > largest)
            {   
                largest = userInt;
            }
            if(userInt < smallest)
            {   
                smallest = userInt;
            }
            // Now that we've evaluated the first number entered we'll get
            //  the next number before we loop again so we'll be ready to see
            //  if we've hit an exit condition
            userInt = input.nextInt();
        }
        // This should be all you need to do, and after the loop is finished
        //  you can report.
        System.out.println("The largest number is:" + largest);
        System.out.println("The smallest number is : "  + smallest);
    }
}
于 2014-09-07T07:37:36.527 に答える
0

forネストされたループは必要ありません。この問題は、1 つのwhileループだけで解決できるはずです。これを修正すると、必要以上の変数があることに気付くでしょう。

于 2014-09-07T06:51:02.313 に答える