当用户输入字符N或n时,我试图让循环结束,但是当我运行程序时,它将无法正常结束。似乎回答的字符不是循环本身读取的,所以有人可以帮助我吗?
import java.util.Scanner;
public class Project4_Baker
{
public static void main(String[] args)
{
Scanner s = new Scanner(System.in);
char answer;
System.out.println("=============");
System.out.println("Prime or Not?");
System.out.println("=============");
do
{
System.out.print("Enter a whole number ==>");
int n = s.nextInt();
System.out.println();
if(isPrime(n))
{
System.out.println(n + " is a prime number.");
}
else
{
System.out.println(n + " is a composite number.");
}
System.out.println();
System.out.print("Do another (Y/N)==>");
answer = s.next().charAt(0);
}while(answer != 'N'|| answer != 'n');
}
public static boolean isPrime(int n)
{
if(n <= 1)
{
return false;
}
for (int i = 2; i < Math.sqrt(n); i++)
{
if (n%i==0)
{
return false;
}
}
return true;
}
}
我的代码不会在它应该
时结束答案 0 :(得分:1)
应该是while(answer != 'N' && answer != 'n');
。使用while(answer != 'N' || answer != 'n');
,如果有人输入N
,则会继续answer
,因为N
等于n
,但它不等于{{1}}。
答案 1 :(得分:0)
试
while(answer != 'N' && answer != 'n');
你想要的角色不等于N&#39; N&#39; AND也不等于&#39; n&#39;
答案 2 :(得分:0)
问题在于循环条件。
while(answer != 'N' || answer != 'n')
上述条件永远都是真的。
请改用:
while(answer == 'Y' || answer == 'y')
答案 3 :(得分:-2)
您尝试在while lopp语句中将String与Char进行比较。 将您的char转换为int并使用unicode表来查找charcode,例如。 n将是110
在你的循环之前:
int a = 0;
在你的循环中:
a = (int)answer;
...(while a != 110 || ...)