2016-11-07 109 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

這並不是Concat的使用+運算符串個好主意加盟。這是一個性能瓶頸。使用'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); 
    } 

或剛使用數組列表,當您打印使用什麼separtor需要

相關問題