0

1 から 1000 までの素数、1 から 1000 までの双子素数、1 から 10,000 までの完全数を表示するものを作成します。これらのメソッドの作成に問題はありませんが、JOptionPane ダイアログ ボックスが今私を夢中にさせています。1 から 1000 までの素数を 1 行に 10 個表示するように取り組んでいます

        if( userChoice == 1 )
        {
            message = String.format( "Prime Numbers between 1-1,000 are:");
            for( number = 3; number <= 1000; number++ )
            {
                if( trueCounter % 10 == 0 )
                    message += "\n";

                prime = isPrime( number );
                if( prime == true )
                {
                    message += " " + number;
                    ++trueCounter;
                }
            }
            JOptionPane.showMessageDialog( null, message );
        }

それは私が持っているもので、すべての数字が表示され、1行あたり10個の数字が表示されます....しかし、その間にランダムな数の余分な行も表示されるため、ダイアログボックスの高さが大きくなりすぎます。そして、それは本当に私を混乱させるものである一定量の余分な行です...

{3 5 7 11 13 17 19 23 29 31
(8 new lines)
37 41 43 47 53 59 61 67 71 73
(10 new lines..)

助けてください!

4

2 に答える 2

1

これを変える:

            if( trueCounter % 10 == 0 )
                message += "\n";

            prime = isPrime( number );
            if( prime == true )
            {
                message += " " + number;
                ++trueCounter;
            }

これに:

            prime = isPrime( number );
            if( prime == true )
            {
                message += " " + number;
                ++trueCounter;

                if( trueCounter % 10 == 0 )
                    message += "\n";
            }

そうでない場合は、0 番目、10 番目、20 番目、... 要素の後に多くの改行を入れています。

ああ、私はStringBuilderの使用を検討します。

于 2013-03-27T21:52:18.290 に答える
0

私はこのようなことに苦労してきました。単語の折り返しとキャリッジ リターンに問題があるのではないかと思います。

これをテストするに\nは、コード内の を like の文字に置き換えてからx、動作を確認します。

それでも新しい行が表示される場合、それらは ではなくワードラップである可能性があります\n

推測です。それが役立つことを願っています。

于 2013-03-27T21:51:05.617 に答える