#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
}