删除输出java末尾的逗号

时间:2011-09-23 17:48:10

标签: java arrays

我正在尝试代码一个基本的应用程序,它将获取用户想要输入的数字量,然后向用户询问数字,将数字保存在字符串数组中,然后以特定格式打印出来。 / p>

这是我到目前为止唯一的问题是我需要在输出结束时删除最后一个逗号,我确定我正在解决这个错误......任何帮助都表示赞赏。

import java.util.Scanner;
public class info {
    public void blue(){
        Scanner sc = new Scanner(System.in);
        Scanner dc = new Scanner(System.in);
        System.out.println("how many numbers do you have?");
        int a = dc.nextInt();
        System.out.println("enter your numbers");

        String index[]=new String [a];
        String i;

        for(int k = 0;k<index.length;k++){
            i = sc.nextLine();
            index[k]=i;
            }

            System.out.print("query (");

            for(int l = 0;l<index.length;l++){
            System.out.printf("'%s',",index[l]);
            }

            System.out.print(")");
    }
}

10 个答案:

答案 0 :(得分:5)

for(int l = 0;l<index.length;l++){
    if(l==index.length-1)
        System.out.printf("'%s'",index[l]);
    else
        System.out.printf("'%s',",index[l]);
}

答案 1 :(得分:4)

 Arrays.toString(array).replaceAll("[\\[\\]]", "");

答案 2 :(得分:2)

这不需要if检查数组中的每个元素:

if(index.length > 0) {
    for(int l = 0;l<index.length-1;l++){
        System.out.printf("'%s',",index[l]);
    }
    System.out.printf("'%s'",index[index.length-1]);
}

答案 3 :(得分:2)

可以采用更清洁的方法,

String comma="";

for(int l = 0; l<index.length; l++)
{
   System.out.printf("'%s''%s'", comma, index[l]);
   // Now define comma
   comma = ",";
}

答案 4 :(得分:1)

你可以使用String的substring方法来删除最后的逗号。在循环中进行连接时,最好使用StringBuilder.append。

答案 5 :(得分:1)

这是在自己的行上显示每个字符串,最后是逗号。如果你想要一行上的所有单词,用逗号分隔,那么替换

for(int l = 0;l<index.length;l++){
    System.out.printf("'%s',",index[l]);
}

StringBuilder buf = new StringBuilder();

for(int l = 0;l<index.length;l++){
   buf.append(index[l]);

   if (l != (index.length - 1)) {
       buf.append(",");
   }
}

System.out.println(buf.toString());

答案 6 :(得分:1)

在C#世界中已经有一段时间了,所以代码可能不准确,但这应该有效

StringBuilder sb = new StringBuilder();
for(int l = 0;l<index.length;l++){
  sb.Append(index[l] + ";");
}
sb.deleteCharAt(sb.Length - 1);
System.out.print(sb.ToString());

这样可以避免代码不必一遍又一遍地写入输出,因此开销也会减少。

答案 7 :(得分:1)

}
System.out.print("\b");//<---------
System.out.print(")");

为什么不使用String缓冲区并最终输出呢?

答案 8 :(得分:1)

导入apache StringUtils,然后执行

StringUtils.join( index, "," );

答案 9 :(得分:1)

更简单的是:

String conj="";
for(int l = 0;l<index.length;l++){
  System.out.print(conj);
  System.out.print(index[l]);
  conj=",";  
}  

你必须经常这样做,我经常写一点“木匠”课:

public class Joiner
{
  private String curr;
  private String conj;
  private StringBuilder value;

  public Joiner(String prefix, String conj)
  {
    this.curr=prefix;
    this.conj=conj;
    value=new StringBuilder();
  }
  public Joiner(String conj)
  {
    this("", conj);
  }
  public Joiner append(String s)
  {
    value.append(curr).append(s);
    curr=conj;
    return this;
  }
  public String toString()
  {
    return value.toString();
  }
}

然后,您可以使用以下代码构建连接字符串:

Joiner commalist=new Joiner(",");
for (String one : many)
{
  commalist.append(one);
}
System.out.println(commalist.toString()); // or whatever you want to do with it

或者喜欢构建WHERE子句:

Joiner where=new Joiner(" where ", " and ");
if (foo!=null)
{
  where.append("foo="+foo);
}
if (bar!=null)
{
  where.append("bar="+bar);
}
String sql="select whatever from wherever"+where;