我正在编写一个简单的 java 代码,它将两个整数作为最小值和最大值,将第三个整数作为除数,它发现它们之间的所有数字都可以被第三个整数整除,这工作正常,但在输出中我不能去掉最后一个逗号。
Scanner scanner = new Scanner(System.in);
System.out.print("Enter the first number: ");
int a = scanner.nextInt();
System.out.print("Enter the second number: ");
int b = scanner.nextInt();
System.out.print("Enter the divisor: ");
int d = scanner.nextInt();
for(int i=a; i<=b; i++) {
if(i%d == 0)
System.out.print(i+", ");
}
我该怎么做?
答案 0 :(得分:3)
我更喜欢通过在适当的地方而不是之后写逗号来避免这个问题。与知道什么时候在做最后一件事相比,知道什么时候在做第一件事似乎更直接。
String sep = ""; // no separator before first print
for (int i=a; i<=b; i++) {
if (i%d == 0) {
System.out.print(sep + i);
sep = ", "; // separator for every following print
}
}
答案 1 :(得分:1)
如果逗号不是最后一个元素,您可以使用 if
语句打印逗号。
if(i%d == 0){
System.out.print(i);
if(((i/d)+1)*d <= b) System.out.print(", ");
}
答案 2 :(得分:1)
您可以使用 as boolean 来控制打印逗号。
boolean addComma = false;
for (int i=a; i<=b; i++) {
if (i%d == 0) {
System.out.print((v ? "," : "") + i);
addComma = true;
}
}
答案 3 :(得分:1)
对于这类问题,StringJoiner
特别有用:
StringJoiner out = new StringJoiner(",");
for(int i=a; i<=b; i++) {
if(i%d == 0)
out.add(Integer.toString(i));
}
System.out.println(out);
答案 4 :(得分:0)
如果是最后一个数字,您可以使用 substring
去掉末尾的空格和逗号。它不像 Unmitigated 的解决方案那么优雅,但它应该可以工作:
String validNumbers = "";
for(int i=a; i<=b; i++) {
if(i%d == 0)
validNumbers += i + ", ";
}
if (validNumbers != "") {
validNumbers = validNumbers.substring(0, validNumbers.length() - 2);
}
System.out.print(validNumbers);