我正在创建一个程序,在该程序中,它生成最多由用户输入的特定数字的素数。当我在运行程序时键入数字时,程序不输出任何内容,并且仍在运行,我无法弄清楚原因。我尝试过使用double而不是int,我尝试使用i ++而不是++我没有解决问题。有人请帮忙!!这是我写的代码:
package assignment_4_1;
import java.util.Scanner;
public class Assignment_4_1 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Scanner input = new Scanner (System.in);
System.out.println("Enter a number above 50 to find all of the primes between 1 and that number: ");
int upto = input.nextInt();
int firstloop = 1;
while(firstloop < upto)
{
for(int i=2; i<=firstloop; ++i)
{
double secondloop;
if(firstloop % i == 0)
{
secondloop = 0;
}
secondloop = 1;
if(secondloop == 1);
{
System.out.println(firstloop);
}
firstloop++;
}
}
}
}
感谢谁能告诉我自己做错了什么。
答案 0 :(得分:0)
它永远不会进入这个循环,因为第一个循环是1,i是2。 所以我永远不会&lt; = firstloop:
for(int i=2; i<=firstloop; ++i) {
所以firstloop永远不会增加,它会永远循环。
答案 1 :(得分:0)
如果您正确缩进代码,您可能会看到,您在for循环内增加了firstloop
!另一方面,for循环永远不会执行,因为for(int i=2; i<=firstloop; ++i)
i
总是大于firstloop
答案 2 :(得分:0)
如果你想调试你的代码,尝试使用小值,铅笔和纸,你可以测试你的所有循环测试,以获得素数或数字,我们实际上应该从素数的定义开始:数字如果数字不是素数,那么它们的n是1,而不仅仅是1和它自己。 N'LT;数量和数量/ n =实数===数量%n = 0,更准确地说是1 <1。 n / number&lt; 2 so:
Scanner input = new Scanner (System.in);
int number= input.nextInt();
boolean prime;
for (int i=1;i<=number;i++)
{
prime=true;
for(int j=2;j<=i/2;j++)
{
if(i%j==0)
{
prime=false;
break;
}
}
if(prime)
{
System.out.println(i+",");
}
}