2016-11-07 16 views
1

私は、ユーザが決めた数を除いて、素数をリストアップするプログラムを書こうとしています。最後の数字の後にカンマを削除するには?

私は素数をコンマで区切りたいですが、最終素数の後にコンマを取り除くことはできません。

は、リストがあるべきユーザーは数10

を選ぶと言う:私は何を得ることはあり 2,3,5,7-

: 2,3,5,7-、

これは多分尋ねられるかもしれませんが、私は何か助けになるか、私の問題にどのように当てはめるかを理解できません。

誰かが正しい方向に向けるでしょうか?

ありがとうございました。

Scanner scanner = new Scanner(System.in); 

    int i = 0; 

    int num = 0; 

    String primeNumbers = ""; 

    System.out.println("Pick a number, any number: "); 

    int n = scanner.nextInt(); 

    for (i = 1; i < n; i++) { 

     int counter = 0; 

     for (num = i; num >= 1; num--) { 

      if (i % num == 0) { 

       counter = counter + 1; 

      } 

     } 

     if (counter == 2) { 

      primeNumbers = primeNumbers + i + ","; 

     } 

    } 

    System.out.println("\nThe prime numbers up to " + n + " are: "); 

    System.out.println(primeNumbers); 
+0

必要なものに参加します。パフォーマンスのボトルネックです。 'StringBuilder.append()'を使用し、forループの外側で 'StringBuilder.delete()'を使用して最後の文字(カンマ)を削除してください – rafid059

+0

数値をintリストに保存できますか?そして、あなたは 'System.out.println(list.stream()。map(String :: valueOf).collect(Collectors.joining("、 ")));' – dty

+0

を利用することができます。ヘルプ@Rafiduzmann Sonnet、ボード上であなたのアドバイスを取るでしょう! – Keeron

答えて

2

書き換え

primeNumbers = primeNumbers + i + ","; 

を使用して最後の文字を削除ありえない場合は、これを行うための簡単な方法は、単にprimeNumbers文字列から最後の文字を削除することです。

primeNumbers.slice(0,primeNumbers.length-1); 
+0

ありがとう、私はこれがなぜ機能するのか理解できます! :) – Keeron

+0

も参照してください:http://stackoverflow.com/a/41282608/363573 – Stephan

2

短い答え: はあなたが必要のないカンマを追加しないでください。

一部の詳細: コンマを追加すると反転します。

このような何か:

for (blah) 
{ 
    if (primenumbers.length() > 0) 
    { 
     primenumbers += ","; 
    } 

    ... blah for next prime number. 

    primenumbers += nextPrimeNumber; 
} 
+0

入力いただきありがとうございます、私は試してみて、私のソリューションにそれを働かせます。 – Keeron

0

代わりにコンマが最後の番号に従ったの、あなたはそれが最後の番号の前に持っている必要があります(文字列は常にコンマなしで最初の素数に初期化することができます) 。

文字列が空であるかどうかを確認することもできます。それだけで、次のよう

if(!primeNumbers.isEmpty()) {primeNumbers+=".";} 
primeNumbers = primeNumbers + i; 
+0

助けてくれてありがとう、素直な解決! – Keeron

0

primeNumbers = primeNumbers.substring(0, primeNumbers.length() - 1)

+0

入力いただきありがとうございます、私は少し研究を行う必要がありますなぜこれが動作するかを確認する必要があります。 – Keeron

0

番号を印刷する前にこの部分を追加するだけです。

if (primeNumbers.lastIndexOf(",") > 0) { 
     primeNumbers = primeNumbers.substring(0, primeNumbers.length() - 1); 
    } 

またはちょうどあなたが使用を印刷するときアレイリストを使用するには+演算子を使用して文字列をCONCATするのは良い考えではありませんsepartorが

関連する問題