Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Arrays_String_Char - Fatal编程技术网

Java 最后不想打印逗号

Java 最后不想打印逗号,java,arrays,string,char,Java,Arrays,String,Char,我正在遍历一个数组,该数组应以以下方式显示: k,j,i,h,g,f,e,d,c,b,a, a,a,a,a,a,a,a,a,a,a,a, b,b,b,b,b,a,a,a,a,a,a, z,y,x,w,v,u,t,s,r,q,p, 但最后没有一个逗号。这就是我目前正在做的 for ( int k = 0; k < lineChar.length; k++ ) //for printing in reverse order {

我正在遍历一个数组,该数组应以以下方式显示:

    k,j,i,h,g,f,e,d,c,b,a,
a,a,a,a,a,a,a,a,a,a,a,
b,b,b,b,b,a,a,a,a,a,a,
z,y,x,w,v,u,t,s,r,q,p,
但最后没有一个逗号。这就是我目前正在做的

for ( int k = 0;  k < lineChar.length;  k++ ) //for printing in reverse order
            {
                if(lineChar[n] != ','){

                System.out.print(lineChar[n]);
                if(k == lineChar.length-1)
                   System.out.print("");
                else
                   System.out.print(",");

                --n;
                }
            }
            System.out.println();
我会用a来做这个:

StringBuilder sb = new StringBuilder();
for (int n = lineChar.length - 1; n >= 0; --n) {
   if (lineChar[n] != ',') {
      if (sb.length() > 0) {
         sb.append(',');
      }
      sb.append(lineChar[n]);
   }
}
System.out.println(sb.toString());
我假设if lineChar[n]!=','是否存在防止打印可能是阵列一部分的任何逗号的方法。如果是因为其他原因,请解释它的用途。

我会用a来表示:

StringBuilder sb = new StringBuilder();
for (int n = lineChar.length - 1; n >= 0; --n) {
   if (lineChar[n] != ',') {
      if (sb.length() > 0) {
         sb.append(',');
      }
      sb.append(lineChar[n]);
   }
}
System.out.println(sb.toString());

我假设if lineChar[n]!=','是否存在防止打印可能是阵列一部分的任何逗号的方法。如果是因为其他原因,请解释它的用途。

您也应该查看番石榴的细木工课程:

您的示例简化为以下内容:

System.out.println(Joiner.on(',').join(lineChar));

你也应该看看番石榴的细木工课程:

您的示例简化为以下内容:

System.out.println(Joiner.on(',').join(lineChar));

试试这个,它的效率很高,因为它在末尾只打印一次,使用StringBuilder构建字符串,不检查循环内部的任何条件,也不需要任何外部库:

public static void printChar(char[] array) {
    if (array == null || array.length == 0)
        return;
    StringBuilder sb = new StringBuilder().append(array[0]);
    for (int i = 1; i < array.length; i++)
        sb.append(',').append(array[i]);
    System.out.println(sb);
}

试试这个,它的效率很高,因为它在末尾只打印一次,使用StringBuilder构建字符串,不检查循环内部的任何条件,也不需要任何外部库:

public static void printChar(char[] array) {
    if (array == null || array.length == 0)
        return;
    StringBuilder sb = new StringBuilder().append(array[0]);
    for (int i = 1; i < array.length; i++)
        sb.append(',').append(array[i]);
    System.out.println(sb);
}

我喜欢使用初始值为空的分隔符变量。然后,我在每个元素前面打印分隔符,然后分配真正的分隔符标记:

String delimiter = "";
for( int i=0; i<lineChar.length; i++ ) {
    System.out.print( delimiter );
    System.out.print( lineChar[ i ] );
    delimiter = ",";
}
这样我就没有条件,每轮只有一个开销分配


这只描述了在输出末尾不使用“,”的方法。但是,您可以轻松地调整其他条件以进行反向迭代,跳过特殊值。

我喜欢使用初始值为空的分隔符变量。然后,我在每个元素前面打印分隔符,然后分配真正的分隔符标记:

String delimiter = "";
for( int i=0; i<lineChar.length; i++ ) {
    System.out.print( delimiter );
    System.out.print( lineChar[ i ] );
    delimiter = ",";
}
这样我就没有条件,每轮只有一个开销分配


这只描述了在输出末尾不使用“,”的方法。但是你可以很容易地调整你的其他条件——反向迭代,跳过特殊值。

如果你不是为了学校或任何你在完成过程中受到限制的事情而这样做的话,你可以尝试将项目推到数组中,然后使用for循环、join语句或字符串生成器进行迭代以打印出来:

  var result = new Array()
  for (x = 0; x < lineChar.length; x++) {
    if (lineChar[x] != ',')
      result.push(lineChar[x]);
  }
  System.out.print(result.join(","));
  System.out.println(); 
编辑以删除我的第三个选项,因为列出了其他更准确的选项


注意:我是一名c和jscript程序员,所以java的语法可能有点不合适,但我使用jscript时认为它也会类似。

如果你不是为了学校或任何你在完成任务方面受到限制的事情而这样做的话,你可以尝试将项目放入数组中,然后使用for循环进行迭代以打印出来,join语句或字符串生成器:

  var result = new Array()
  for (x = 0; x < lineChar.length; x++) {
    if (lineChar[x] != ',')
      result.push(lineChar[x]);
  }
  System.out.print(result.join(","));
  System.out.println(); 
编辑以删除我的第三个选项,因为列出了其他更准确的选项


注意:我是一名c和jscript程序员,所以java的语法可能有点不合适,但我选择了jscript,因为我认为它会很相似。

为什么不在添加完后,将最后一个字符再细分为子字符串呢

比如说

字符串文本=a,b,c,d,e,f

字符串finalText=text.substring0,text.length-1


为什么不在添加完后,将最后一个字符完全分为子字符串呢

比如说

字符串文本=a,b,c,d,e,f

字符串finalText=text.substring0,text.length-1


我发现使用StringBuffer来构建最终要打印的字符串是最简单的,在每一项(甚至第一项)之前都放一个逗号,然后在循环结束后,使用一个.print语句从第二个字符开始打印整个StringBuffer。这样我就不需要在循环中进行任何if/else结构或其他测试。顺便说一下,您不需要在当前if分支中打印空字符串。使用第三方库可以吗?或者您想自己编写这样做的代码?我发现使用StringBuffer构建最终要打印的字符串是最简单的,在每个项(甚至第一项)之前都加一个逗号,然后在循环结束后,使用一个.print语句从第二个字符开始打印整个StringBuffer。这样我就不需要在循环中进行任何if/else结构或其他测试。顺便说一下,您不需要在当前if分支中打印空字符串。使用第三方库可以吗?或者您想自己编写执行此操作的代码?如果lineChar[lineChar.length-1]==','?OP的代码不会打印出来,而您的代码会打印出来。如果第一个字符是a,怎么办?如果第一个字符是a,它不会打印,是循环中的最后一个字符,那么iflineChar[n]!=','应用。如果最后一个字符是,我在@aix feedback之后所做的编辑将捕获它。如果lineChar[lineChar.length-1]==','?OP的代码不会打印出来,而你的代码会打印出来。如果第一个字符
字符是一个,如果第一个字符是一个,则它不会被打印,是循环中的最后一个字符,因此iflineChar[n]!=','应用。如果最后一个字符是a,@aix feedback之后的编辑将捕获它将打印数组中他不想做的所有逗号,因为他在打印前检查将打印数组中他不想做的所有逗号,因为他在打印前检查我最喜欢这个,但我会做一个改变。从最后一行删除对toString的调用,因为println无论如何都会调用对象的toString方法。我最喜欢这个方法,但我会做一个更改。从最后一行删除对toString的调用,因为println无论如何都会调用对象的toString方法。OP的问题带有java标记,这个答案在java中不起作用。不管最后的注释是什么,您都应该坚持OP的问题。OP的问题带有java标签,这个答案在java中不起作用。不管最后的注释是什么,你都应该坚持OP的要求。