Java 在JOptionPane输出上的一行中打印10组素数

Java 在JOptionPane输出上的一行中打印10组素数,java,prime-factoring,Java,Prime Factoring,我想找到从1到1000的素数,以及从1到10000的完美数。最后我得到了代码输出。但我想在一行上打印10个素数 例如: 2 3 5 7 11 13 17 19 23 29然后 31374143475359616771 然而,我的输出是这样的 235791113171923293137414347 有两组代码,一组是方法,另一组是调用该方法的实际程序 public class MyMath {//class start //method to define prime number

我想找到从1到1000的素数,以及从1到10000的完美数。最后我得到了代码输出。但我想在一行上打印10个素数

例如:

2 3 5 7 11 13 17 19 23 29然后

31374143475359616771

然而,我的输出是这样的

235791113171923293137414347

有两组代码,一组是方法,另一组是调用该方法的实际程序

public class MyMath
{//class start

    //method to define prime number
    public static boolean isPrime( long num )
    {//start isPrime method

        //declare and initialize prime variable as true
        boolean isPrime = true;

        if ( num >= 2)
        {//start if statement

            for ( long counter = 2; counter < num; counter++)
            {//start for loop

                //define whether num is prime or not with
                // a reminder operator
                if( num%counter == 0)
                    isPrime = false;//if not initialize variable to false   
            }//end for loop
        }//end if

        //check for negative number and two
        if( num <= 1 )
            isPrime = false;
        if ( num == 2)
            isPrime = true;

        return isPrime;//send back prime variable
    }//end method

    //method to define perfect numbers
    public static boolean isPerfect( long num )
    {//start method
        //declare and initialize perferct number variable as true
        boolean isPerfect = true;
        long sum = 0;

        //check for input
        if ( num <= 1)
            isPerfect = false;

        //if num is larger than one
        if ( num > 1)
        {//start if statement
            //use a for loop to find the factor 
            for(long factor = 1; factor <= num/2; factor++ )
            {//start for loop
                if( num%factor == 0 )
                    sum += factor;
            }//end for loop
        }//end if statement

        //if the sum of the factor equal to num
        //initialize perfect number variable as true
        //else perfect number variable is false
        if ( num == sum )
            isPerfect = true;
        else
            isPerfect = false;
        return isPerfect;//send back perfect number variable
    }//end method
}//end class
这是实际的代码

import javax.swing.JOptionPane;//import JOptionPane for dialog boxes

public class MyMathTest
{//start MyMathTest class

    public static void main (String args [])
    {//start main

        //a string to prompt the user in a dialog box
        String choice = "Enter 1 to display the prime numbers from 1 - 1,000\n" +
               "Enter 2 to display perfect numbers from 1 - 10,000\n" +
               "Enter 3 to quit\n" + "written by blabla";
        int userInput;//declare a variable for user's input

        do
        {//start do while loop to check for input range
            String prompt = JOptionPane.showInputDialog( choice );
            userInput = Integer.parseInt ( prompt );
        }

        while( userInput < 1 ^ userInput > 3);//repeat the prompt if input is larger than 3 or smaller than 1

        //declare and initialize a counter for line format of the string
        int lineCounter = 1;

        switch ( userInput )
        {//start switch

            case 1:
                //declare and initialize a string for header and hold the numbers of prime
                String primeNumberString = String.format ("The prime number from 1 - 1000 are\n");

                for (int primeCounter = 1; primeCounter < 1000; primeCounter++ )
                {//start loop

                    //print a new line after 2 prime number
                    //and restart to count the counter from 1
                    if ( lineCounter == 11 )
                    {//start if
                        primeNumberString += "\n";
                        lineCounter = 1;
                    }//end if

                    //if prime number is true
                    if (MyMath.isPrime( primeCounter ))
                    {//start if
                        //add number to the string
                        primeNumberString += String.format ("%d", primeCounter );
                        //add tone to lineCounter after every prime number 
                        ++lineCounter;  
                    }//end if                   
                }//end loop

                //display prime number message within a dialog box
                JOptionPane.showMessageDialog ( null,primeNumberString );
                //exit the switch
                break;

            case 2:
                //declare and initialize a string for header and hold the perfect numbers
                String perfectNumberString = "Perfect numbers from 1 - 10,000 are:\n";

                for (int perfectCounter = 1; perfectCounter < 10000; perfectCounter++)
                {//start the loop

                    //if the perfect number is true
                    if(MyMath.isPerfect( perfectCounter ))

                        //add perfect number into the string
                        perfectNumberString += String.format ( "%d ", perfectCounter);      
                }//end for loop

                //display perfect number message within a dialog box
                JOptionPane.showMessageDialog ( null, perfectNumberString );
                break;//exit switch

            case 3:
                break;//exit switch     
        }//end switch       
    }//end main method  
}//end class

再添加一个if条件,该条件将

if(lineCounter == 10){
      primeNumberString += "\n";
      lineCounter = 1;
}
这将创建一条新线并放置lineConter


如果您可以将primeNumberString更改为StringBuffer,则只需保存+即可。

谢谢您的帮助,现在我的质数输出每行为10。但不知何故,在每行10个数字之后,它有4-5行的间隔,然后它又显示10个素数。@Andrylie:还有一件事。请尝试删除iflineCounter==1块抱歉。我犯了一个愚蠢的错误,我只是将你的if语句添加到我的代码中,而没有意识到我的代码中已经有了相同的精确语句。所以我只做了iflineCounter==11,而不是iflineCounter==10。当我设置linecounter==11时,它会在每行显示10个素数,然后跳到下一行显示另外10个素数。非常感谢你帮助我。我真的很感激:D