在两个单独的列中打印ArrayList的内容和相应的数字

时间:2015-09-09 19:17:23

标签: java arraylist numbers

我刚刚开始了一个新项目,现在所有我想弄清楚的是如何将列名列表的内容直接打印到列的右侧,列中的每个对象都有相应的编号。名单。

import java.util.ArrayList;
import java.util.Scanner;

/**
 *
 * @author
 */
public class EmployeeRoster {

    String name =" ";

    String id = "%03d";
ArrayList<String> names = new ArrayList<>();
public void Roster()
{



  Scanner n = new Scanner(System.in);
  System.out.println("Enter employee's first and last name. (Must fit within 15 characters)");

  while(!name.equals("d"))
  {

      name =  n.nextLine();
    names.add(name); 
    names.remove("d");
  }



   for(Object o : names)
      {
         //System.out.println(o);

  for( int i = 1; i <= names.size(); i++)

      System.out.println(String.format(id,i) + o );

  }

}
}

现在该模块显示:

Enter employee's first and last name. (Must fit within 15 characters)
Jeb Snow
Rob Stork
Bran Stork
d
001Jeb Snow
002Jeb Snow
003Jeb Snow
001Rob Stork
002Rob Stork
003Rob Stork
001Bran Stork
002Bran Stork
003Bran Stork

我知道为什么我的程序会像这样打印出来,但我不知道如何获得它 看起来像:

001 Jeb Snow
002 Rob Stork
003 Bran Stork

2 个答案:

答案 0 :(得分:3)

您只需要单for次循环。

for(int i = 0; i < names.size(); i++) {
  System.out.println(String.format("%03d %s", i + 1, names.get(i)));
  //OR
  //System.out.printf("%03d %s \n", i + 1, l.get(i));
}

答案 1 :(得分:0)

您可以使用:

    for (int i = 1; i <= names.size(); i++)       {
        System.out.println(String.format("%03d %s", i, names.get(i - 1)));
    }

而不是

for(Object o : names)
      {
         //System.out.println(o);

  for( int i = 1; i <= names.size(); i++)

      System.out.println(String.format(id,i) + o );

  }