【发布时间】:2016-11-07 17:50:28
【问题描述】:
我正在尝试编写一个程序来列出质数,但不包括用户确定的数字。
我希望素数用逗号分隔,但我似乎无法摆脱最后一个素数后的逗号。
假设用户选择了数字 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);
【问题讨论】:
-
使用 + 运算符连接字符串不是一个好主意。这是一个性能瓶颈。使用
StringBuilder.append( ),在for循环外使用StringBuilder.delete( )删除最后一个字符(逗号) -
你能把数字存储在 int 列表中吗?然后你可以使用
System.out.println(list.stream().map(String::valueOf).collect(Collectors.joining(","))); -
感谢@Rafiduzmann Sonnet 的帮助,我会采纳你的建议!
-
谢谢@dty,我正在看类似的东西,但迷路了,不过我会再试一次!