내 목표는 사용자 입력을 받고 소수인지 여부를 확인하는 것입니다.다음 코드가 제대로 작동하지 않는 이유는 무엇입니까? (Java)
'몇 시간 동안 이걸로 노예 상태에 있었고 거의 작동합니다. 그러나 2 또는 3을 입력하면 아무 것도 얻지 못합니다. do-while 루프는 다음 반복으로 건너 뜁니다.
내가 만든 for 루프는 2 또는 3에서 작동하지 않으므로 별도의 if 문을 만들었습니다. 문제는 작동하지 않는다는 것입니다. 그리고 나는 아마 그것이 실행되지 않는다는 것 외에는 이유에 대한 단서를 가지고 있지 않습니다. ,
import java.util.Scanner;
public class Lab4a {
public static void main (String [] args) {
Scanner scnr = new Scanner(System.in); //creates a Scanner that will receive user input
boolean isPrime = false; //this, in the end, is where the "primeness" of the input is stored
int num; //the variable which will store the user input
boolean isOver = false; //is true once the "primeness" of the input has been decided
do { //executes at least once
System.out.println("Enter a positive integer or 0 to exit:"); //prompts the user for input
num = scnr.nextInt(); //stores the input
if (num == 0) { //if the number is zero, the loop terminates; if it's negative, the loop terminates as well
System.exit(0);
} else if (num < 0) {
System.out.println("Please enter a positive integer.");
System.exit(1);
}
for (int mult = 2; mult <= num/2; mult++) { //divides the user input by 2, tests for if anything remains; increments by one up to the half of the number. If a remain is encountered,
// isPrime becomes false and isOver true and the for loop is terminated. If not, the for loop will end with isPrime true and isOver false
if (num % mult == 0) {
isPrime = false;
isOver = true;
break;
} else {
isPrime = true;
isOver = true;
}
}
if (num == 2 || num == 3) { //the for test above does not work if the user input is 2 or 3, so a separate if statement tests for that
isPrime = true;
}
} while (!isOver); //if isOver is true, the while loop ends
if (isPrime == true) { //prints the appropriate answer
System.out.println(num + " is prime.");
} else {
System.out.println(num + " isn't prime.");
}
}
}
나는 일반적으로 이러한 문제를 스스로 해결하려고 노력하지만, 내가 다시 말 그대로 4 시간 동안이 멀리 노예되었고, 나는 아직도 내일을 준비하기 위해 작성하는 다른 유사한 프로그램과 수학 퀴즈를 나는 정확히 잭 똥을 알고있다. 나는 정말로 필사적이다.
TL : DR : 2 또는 3을 입력하면 프로그램이 제대로 작동하지 않습니다. if 문이 실행되지 않기 때문일 수 있습니다. 그 너머, 나는 아무것도 모른다.
도움 주셔서 감사합니다.
이것은 당신이 코드를 디버깅하는 방법을 배울 수있는 좋은 기회입니다. 또한, 당신의 가난한 시간 관리가 인터넷 낯선 사람들의 무리에게 문제를 덜어주는 이유는 아닙니다. – rmlan
'if' 블록에'isOver = true;'를 넣습니다. –
/me 계산기를 꺼내서 2 %의 값을 확인하십시오. 2 – MeBigFatGuy