当我在循环中打印数字时,如何删除最后一个逗号?

时间:2017-02-10 02:37:54

标签: java

所以我这样做是为了在我选择的两个数字之间打印素数;但是,它在最后一个数字后打印出一个逗号,我不知道如何取消它。 例      in:0 10      出:2,3,5,7,      我想要2,3,5,7

Scanner s = new Scanner(System.in);
int a = s.nextInt();
int b = s.nextInt();


for (int i = a; i <= b; i++){
    int j;
    for (j = 2; j<i; j++){
        int p = i%j;
        if(p==0){break;}
    }
    if(i == j){System.out.printf("%d,", i);}
}




}

5 个答案:

答案 0 :(得分:1)

使用boolean跟踪您是否已打印任何内容。然后您的格式字符串可能类似于

anythingPrinted ? ",%d" : "%d"

也就是说,如果打印了某些内容,则只在格式字符串中包含逗号。

答案 1 :(得分:0)

这可能看起来有点矫枉过正,而且在很多情况下可能是这样,但我一直在编写一个源代码转码器,我发现这种情况很多。我需要在值之间使用逗号,或者只打印一次的前缀值。所以我发现创建一个简化事物的类很方便。

同样,如果你的代码中有一个或两个打印循环,你可能不想使用它,但也许如果你有多个。如果您永远不会使用它,也许您会在“第一”部分删除。

public class FirstPrintOptions {
    private PrintStream printStream;
    private String onFirst;
    private String remaining;
    private boolean trip = false;

    public FirstPrintOptions(PrintStream printStream, String onFirst, String remaining) {
        this.printStream = printStream;
        this.onFirst = onFirst;
        this.remaining = remaining;
    }

    public void print() {
        if (!trip) {
            if (onFirst != null) {
                printStream.print(onFirst);
            }
            trip = true;
        } else {
            if (remaining != null) {
                printStream.print(remaining);
            }
        }
    }
}

然后像这样使用..

    FirstPrintOptions firstPrintOptions = new FirstPrintOptions(System.out, null, ",");
    for (int x=0;x<10;x++) {
        firstPrintOptions.print();
        System.out.print(x);
    }

结果是..

0,1,2,3,4,5,6,7,8,9

答案 2 :(得分:0)

使用StringBuilder并在程序结束时写入控制台。

StringBuilder sb = new StringBuilder();
for (int i = a; i <= b; i++){
    int j;
    for (j = 2; j<i; j++){
        int p = i%j;
        if(p==0){break;}
    }
    if(i == j){
        // If the length of the StringBuilder is 0, no need for a comma
        if(sb.length() != 0) {
            sb.append(",");
        }
        sb.append(i);
    }
}
System.out.println(sb);

答案 3 :(得分:0)

我正在测试,我想出了这个。我使用的是compilejava.net,因此扫描仪不起作用。我绕过那个部分,只需手动设置a和b。基本上,它使用数字构建一个字符串,并以逗号结尾。然后它打印一个子字符串,包括除最后一个逗号之外的所有内容。

import java.util.*;
public class HelloWorld {

public static void main(String[] args) {

//Scanner s = new Scanner(System.in);
int a = 2;
int b = 18;
String c = "Output = ";

for (int i = a; i <= b; i++){
int j;

for (j = 2; j<i; j++){
    int p = i%j;
    if(p==0){break;}
}
if(i == j){c=c+ Integer.toString(i) + ",";}
}
System.out.print(c.subSequence(0, c.length()-1));



 }
}

答案 4 :(得分:0)

该程序用于查找数字因子

function two() {//this function takes 2 seconds
  return new Promise(resolve => {
    setTimeout(() => {
      resolve('resolved');
    }, 2000);
  });
}
function one(){
    console.log("one");
}
async function asyncCall() {
  console.log('calling');
  const result = await two();
 one()
  // expected output: 'resolved'
}

asyncCall();

所以我得到10的输出 1,2,5,10