Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在循环中打印数字时,如何删除最后一个逗号?_Java - Fatal编程技术网

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

Java 在循环中打印数字时,如何删除最后一个逗号?,java,Java,所以我做这个是为了在我选择的两个数字之间打印素数;然而,它在最后一个数字后打印出一个逗号,我不知道如何去掉它。 实例 在: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++){

所以我做这个是为了在我选择的两个数字之间打印素数;然而,它在最后一个数字后打印出一个逗号,我不知道如何去掉它。 实例 在: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);}
}




}
使用布尔值跟踪是否已打印任何内容。那么您的格式字符串可以是

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

也就是说,只有在有打印内容的情况下才在格式字符串中包含逗号。

这似乎有些过分,在很多情况下可能是这样,但我一直在编写源代码转码器,我发现这种情况经常出现。其中,值之间需要逗号,或者只打印一次的前缀值。所以我发现创建一个简化事情的类很方便

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

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);
    }
使用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);

我在测试,我想出了这个。我使用的是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));



 }
}

本程序用于求一个数的因子

for(i=1;i<=number;i++)
{
  if(number%i==0)
  {
    system.out.print(i);
    if(i!=0)
    {system.out.print(",");}
  }
}
所以我得到了10的输出
1,2,5,10

删除最后一个逗号的唯一方法是不首先打印它。在当前索引上设置逗号打印条件。@dasblinkenlight不起作用。你不知道你什么时候在打印最后一个逗号的迭代中。
for(i=1;i<=number;i++)
{
  if(number%i==0)
  {
    system.out.print(i);
    if(i!=0)
    {system.out.print(",");}
  }
}