Программа не выводит, если вход не 0

Это должно быть повышение квалификации для начала второго семестра, и по какой-то причине моя программа бесконечно петляет. Задание состоит в том, чтобы взять входные данные и вывести сумму натуральных чисел, количество четных чисел и т.д.

Единственный раз, когда моя программа разорвет цикл, — это если первый вход равен 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 ответа

  1.     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();
        }
    

    Вам нужно перечитывать входные данные. Потому что он никогда не сломает пока петля

  2. Вы должны прочитать ваше значение внутри вашего цикла :

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

    Поскольку ваши значения in никогда не меняются, вы никогда не разорвете свой цикл.

    Как раз предложите, в вашем случае лучшая петля do{}while(condition);

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

    Надеюсь, это поможет вам.