-1

Javaでは、ユーザーが入力した整数の単一シーケンスを使用して複数のループを実行するのに問題があります。個別に、それらは個別に正常に実行されますが、一緒にすると、誤った数値が出力されます。

何がこの問題を引き起こしているのか途方に暮れています。

これが私のコードです。

import java.util.Scanner;

public class SequenceTester
{
public static void main(String[] args)
{
    Scanner in = new Scanner(System.in);

    System.out.println("Enter a sequence of integers. " + 
        "Enter a non-integer to terminate");
    int sequence = in.nextInt();

    //Print One
    int min = sequence;
    while(in.hasNextInt())
    {
        int input = in.nextInt();
        if(input < smallest)
        {
            smallest = input;
        }
    }
    System.out.println(smallest);  

    //Print Two
    int max = sequence;
    while(in.hasNextInt())
    {
        int input = in.nextInt();
        if(input > max)
        {
            max = input;
        }
    }
    System.out.println(max); 

    //Print Three
    int even = 0;
    int odd = 0;
    while(in.hasNextInt())
    {
        int input = in.nextInt();
        if((input %2) == 0)
        {
            even++;
        }
        else
        {
            odd++;
        }
    }
    System.out.println( even);
    System.out.println(odd);

    //Print Four
    double total = 0;
    int count = 0;
    while (in.hasNextInt())
    {
        Int input = in.nextInt();
        total = total + input;
        count++;
    }
    double average = 0;
    if (count > 0)
    {
        average = total / count;
    }
    System.out.println(average);
    }
}
4

1 に答える 1

0

あなたのコードは非常に断片化されていますが、ループ条件はすべて同じであるため、1 つのループで目的を達成できるようです。もちろん、これはあなたが私たちに与えた漠然とした説明に基づいているだけです。

while(in.hasNextInt()) {
        int input = in.nextInt();
        if(condition1) {
            //do stuff
        } else if (condition2) {
            //do other stuff
        } else if (conditionN) {
            //do other other stuff
        } else {
            //last of the stuff to do
        }
}
于 2013-03-19T19:22:55.367 に答える