So , there's the code where I try to figure out prime number. Its crucial to use while loop instead of for. When I try to run this code its working correctly , but in the end printing "Exception in thread "main" java.lang.ArithmeticException: / by zero" mistake.
Scanner new_input = new Scanner(System.in);
int number = new_input.nextInt();
boolean True = true;
int just_number = 0;
int sum = 0;
while (True){
just_number += 1;
if (number % just_number == 0){
sum += 1;
if (just_number == number && sum == 2){
System.out.println(number + " is prime number");
}
else if(just_number == number && sum != 2){
System.out.println(number + " isn't prime number");
}
}
else{
continue;
}
I specially printed just_number += 1 in the start of the loop to fix this problem , but it isn't.
As already stated, you loop forever, updating just_number
. The following corrects that and offers a way to stop the program. The signficant change is to break out of the inner while loop after the result is determined.
while (true) {
System.out.print("Please enter an integer: ");
int number = new_input.nextInt();
if (number <= 0) {
System.out.println("Bye!");
break;
}
int just_number = 0;
int sum = 0;
while (true) {
just_number += 1;
if (number % just_number == 0) {
sum += 1;
if (just_number == number && sum == 2) {
System.out.println(number + " is prime number");
break;
} else if (just_number == number && sum != 2) {
System.out.println(number + " isn't prime number");
break;
}
}
}
}
Note that there are more efficient ways to accomplish this and SO has many examples.