2016-11-07 121 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需要