有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java中不在末尾添加逗号

我想打印出这个数组中的值,每个值在java中用逗号分隔。但是,我不希望最后一个值后面有逗号

for (double val : output.getPvalues()) 
{
    System.out.print(val + ",");
}

现在,我的输出是这样的,我不想在末尾加逗号

0.3151985084814564,0.12439565272818136,0.08395574717762709,
0.23648887465370277,0.13987884822617208,0.1316174439685804,
0.23774083903133078,0.14471871035755607,0.16040529724318148,
0.23138041484992727,0.12692146250237307,0.10444029009575935,

抱歉,这是我在java的第一天,我不知道如何找到这个对象的长度。我该怎么做


共 (3) 个答案

  1. # 1 楼答案

    如果output.getPvalues()返回一个数组,可以使用:

    double[] values = output.getPvalues();
    for (int i = 0; i < values.length(); i++) {
         System.out.print(values[i]);
         if (i != values.length - 1) {
             System.out.print(",");
         }
    }
    

    或者,为了简化条件,您可以在之前打印一个逗号,除了第一项之外——在这一点上,您可以返回到一个增强的for循环,因为很容易判断您是否在第一次迭代中:

    boolean firstIteration = true;
    for (double value : output.getPvalues()) {
         if (firstIteration) {
             firstIteration = false;
         } else {
             System.out.print(",");
         }
         System.out.print(values[i]);
    }
    

    或者,如果您使用的是Java8,您可以使用streams和Collectors.joining,但这更高级

  2. # 2 楼答案

    首先查看文档,看看这种方法是否存在于outputoutput.getPValues()中。然而,即使没有它,你也不应该被阻止,因为至少有两种方法可以做到这一点:

    boolean init = true;
    for (double val : output.getPvalues()) {
        if (init) init = false;
        else      System.out.print(",");
        System.out.print(val);
    }
    
    // or
    StringBuilder sb = new StringBuilder();
    for (double val : output.getPvalues()) {
        sb.append(val);
        sb.append(",");
    }
    System.out.println(sb.substring(0,sb.length()-1);
    
  3. # 3 楼答案

    您可以跳过“,”最后使用“\b”

    for (double val : output.getPvalues()) {  
    System.out.print(val + ",");
    }
    System.out.print("\b\n");   // it will skip last , and add \n at last