除非输入为0,否则程序不输出

时间:2017-01-13 19:19:02

标签: java loops while-loop

这应该是第二学期开始的复习作业,由于某种原因,我的程序无休止地循环。赋值是获取输入并输出正整数之和,偶数整数等等。

我的程序断开循环的唯一时间是第一个输入是0,如果第一个输入不是0,无论怎样,我的程序都不会输出任何东西。

import java.util.Scanner;

public class Assignment2{
  public static void main(String args[]){

    Scanner in = new Scanner(System.in);
    int min = 0;
    int count = 0;
    int sumpos = 0;
    int evencount = 0;
    int input = in.nextInt();
    int temp = 0;

    while(input != 0){

        count++;

        if(input %2 == 0){
            evencount++;
        }

        if(input > 0){
            temp = sumpos;
            sumpos = temp + input;
        }

        if(input < min){
            min=input;
        }
    }

    System.out.println("The minimum integer is " + min);
    System.out.println("The count of integers is " + count);
    System.out.println("The sum of positive integers is " + sumpos);
    System.out.println("The count of even integers in the sequence is " + evencount);

    in.close(); 

    }
}

2 个答案:

答案 0 :(得分:0)

    int input = in.nextInt();
    int temp = 0;
    while(input != 0){ //

        count++;

        if(input %2 == 0){
            evencount++;
        }

        if(input > 0){
            temp = sumpos;
            sumpos = temp + input;
        }

        if(input < min){
            min=input;
        }


  input = in.nextInt();
    }

您需要重新输入您的输入。因为它永远不会打破while循环

答案 1 :(得分:0)

您应该在循环中读取您的值:

while (input != 0) {
...
    input = in.nextInt();

...
}

因为你的in值永远不会改变,所以你永远不会破坏你的循环。

建议,在您的情况下,更好的循环是do{}while(condition);

int input;
do{
   input = in.nextInt();
   //your code

}while();

希望这可以帮到你。