我正在尝试编写一个程序,列出最多的素数,但不包括用户确定的数字。
我希望用逗号分隔素数,但在最终素数之后我似乎无法摆脱逗号。
假设用户选择号码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 :(得分:2)
简短回答: 不要添加你不需要的逗号。
一些细节: 添加逗号时反转。
做这样的事情:
for (blah)
{
if (primenumbers.length() > 0)
{
primenumbers += ",";
}
... blah for next prime number.
primenumbers += nextPrimeNumber;
}
答案 1 :(得分:2)
重写
primeNumbers = primeNumbers + i + ",";
以下列方式
if(!primeNumbers.isEmpty()) {primeNumbers+=".";}
primeNumbers = primeNumbers + i;
答案 2 :(得分:0)
不要让逗号跟在最后一个数字之后,而应该让它在最后一个数字之前(字符串总是可以初始化为第一个不带逗号的素数)。
或者,您可以检查字符串是否为空。如果不是只使用for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
if (!snapshot.getKey().equals(currentuseruid)) {
player2uid = snapshot.getKey();
}
}
答案 3 :(得分:0)
一种简单的方法是从primeNumbers字符串中删除最后一个字符。
.layover
答案 4 :(得分:0)
只需在打印号码前添加此部分。
if (primeNumbers.lastIndexOf(",") > 0) {
primeNumbers = primeNumbers.substring(0, primeNumbers.length() - 1);
}
或者当您使用所需的separtor打印使用连接时,只需使用数组列表