Попытка завершить цикл с «0» от пользователя

#java

#java

Вопрос:

Назначение заключается в попытке получить простые числа из того, что вводит пользователь, и я пытаюсь завершить цикл, введя 0 пользователем

 /*
 Natasha Shorrock
 Assignment A4
 10/20/16
 */
package a4;

import java.util.Scanner;

public class MainApp {

        static boolean isPrimeOptimized(int candidate) {
        if (candidate < 2) {
            return false;
        }//if
        if (candidate % 2 == 0) {
            //divisble by 2 with no remainder
            //is not prime
            return false;
        }//if
        int divisor = 3;
        while (divisor < candidate / 2) {
            if (candidate % divisor == 0) {
                return false;// this is not prime
            }//if
            divisor = divisor   2;
        }//while
        return true;
    }//isPrime

    public static void main(String[] args) {
        while (true) {
            Scanner sc = new Scanner(System.in);
            System.out.println("Enter 2 numbers or zero to exit: ");

            //ask the user for low and high
            //range of [prime numbers to generate
            int low = sc.nextInt();
            int high = sc.nextInt();

            int candidate = low;
            int count = 0;
            while (candidate <= high) {
                if (isPrimeOptimized(candidate)) {
                    //if prime print
                    count = count   1;
                    System.out.println();
                    System.out.println(count   " "   candidate);

                }//if
                candidate = candidate   1;
            }//while

        }//while (true)

    }//class

}//classMainApp
  

Комментарии:

1. Она запрашивает только одно число, поэтому, если она введет 0 , будет заполнено только low , и оно будет ждать high . Таким образом, if должен находиться между двумя проверками и должен проверять только low

Ответ №1:

Поскольку вы запрашиваете только одно число для выхода, 0 , только low будет заполнено, и оно будет ждать high . Таким образом, if должно быть между двумя проверками и должно проверять только low

Добавьте if оператор под low , чтобы проверить, равно ли это 0.

 int low = sc.nextInt();
if(low == 0){
    break;
}
  

Комментарии:

1. Какой низкий уровень вы имеете в виду?

2. @ShreyasSarvothama break выйдет из while(true) цикла и продолжит работу с программой, что, как я полагаю, хочет сделать OP. В этом случае программа завершится, когда этот цикл будет прерван, но это оставляет место для выполнения других действий впоследствии.

Ответ №2:

Прежде всего, даже если пользователь вводит 0, вы заставляете их вводить два числа:

 int low = sc.nextInt();
int high = sc.nextInt();
  

Я бы посоветовал вам сделать следующее в вашем коде:

 int low = sc.nextInt();
if(low==0){
   return 0;
} else{

   int high = sc.nextInt();
   //rest of your code and while loop
}