Console Java中没有输出

时间:2014-11-06 14:11:04

标签: java for-loop while-loop primes

我正在创建一个程序,在该程序中,它生成最多由用户输入的特定数字的素数。当我在运行程序时键入数字时,程序不输出任何内容,并且仍在运行,我无法弄清楚原因。我尝试过使用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++;
           }
       }
    }
}

感谢谁能告诉我自己做错了什么。

3 个答案:

答案 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+",");
}
}