它应该是循环没有结束

时间:2014-10-21 00:58:07

标签: java

当用户输入字符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;
}
}

我的代码不会在它应该

时结束

4 个答案:

答案 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 || ...)