我要在这里发布我的程序的功能部分(不是hello和再见图形的方法......它们很好!)。基本上,程序让用户输入一个整数,确定它是否为素数,并询问他们是否想再次这样做。它继续运行循环直到他们说不。
这是我到目前为止所拥有的 主要:
public static void main (String[] args)
{
Scanner scan = new Scanner (System.in);
int n = 0, even = 2;
int answer = 0;
String reply;
char doAgain = 'Y';
Welcome();
do
{
System.out.print("Enter a whole number: ");
n = scan.nextInt();
PrimeTest(n);
System.out.print("Try another number? (Y/N): ");
reply = scan.next().toUpperCase();
doAgain = reply.charAt(0);
System.out.println();
}while(doAgain != 'N');
Goodbye();
}
这里显然没有工作的部分 - 它对3没有任何作用,并说21是一个素数:
public static void PrimeTest(int n)
{
int two = 2;
while(two <= n / 2)
{
if(n % two == 0)
{
System.out.println(n + " is not a prime number.");
System.out.println();
}
else
{
System.out.println(n + " is a prime number.");
System.out.println();
}
break;
}
}
任何帮助表示赞赏!无论是效率还是指出我搞砸了。请告诉我您需要的其他详细信息。
答案 0 :(得分:0)
该测试尽可能错误......它只是检查一个数字是否均匀(但你已经替换了单词,因为它说它不是/不是一个素数)。
您也永远不会更改two
,因此技术上while
循环永远不会结束。
当它没有为3
做任何事情
two <= n / 2
等于3时, n
将始终评估为false - 因此无法打印任何内容,因为while
循环不会被输入。
并说21是素数
你的模数计算表明21是奇数,但因为你已经改变了它显示为 prime 的措辞。