如何添加与数组关联的整数值?

时间:2012-12-03 22:31:58

标签: java

确定我的getBreadInfo代码是

public static String[] getBreadInfo()  
{   
    ArrayList<String> breadsList = new ArrayList<>();

        try (BufferedReader in =
                new BufferedReader(
                new FileReader("bread.txt")))
        {
            String line = in.readLine();
            while (line != null)
            {
                String[] elems = line.split("~");
                breadsList.add(elems[0]+ " $" + elems[1]);
                line = in.readLine();
            }

        }
        catch(IOException e)
        {
            System.out.println(e);
            return null;
        }
    String[] breadInfo = breadsList.toArray(new String[]{});
    return breadInfo;
}

并在我的主应用程序中显示此数组为

public static void displayBreadMenu()  
{  
    System.out.println("=== Select Sandwich Bread ===");

   String[] breadInfo = SandwichDB.getBreadInfo();
   for (String breads : breadInfo)
   {
       System.out.println(breads);
   }
}

它在控制台上打印为

===选择三明治面包===
白面包1.50
小麦面包1.80
法式面包2.00
有机面包2.30

如何添加整数值以与每个数组关联?像
1白面包
2小麦面包
3法式面包
4有机面包

我告诉我的getBread()类似于getBreadInfo,除了它只包含 面包名称,并为SandwichApp返回另一个数组bread [] 用户选择哪个面包因为用户输入了一个数字 与面包(索引+ 1)相关联,而不是面包名称。

我在getbread()中写入整数值还是getBread只是为了检查用户选择的面包?

3 个答案:

答案 0 :(得分:1)

我认为这就是你想要的。只需使用变量来显示行...

int counter = 0;
for (String breads : breadInfo)
{
    System.out.println(++counter + "\t" + breads);
}

答案 1 :(得分:1)

如何使用计数器并在添加到列表时附加它。

int count=1;
 while (line != null)
            {
                String[] elems = line.split("~");
                breadsList.add(count+" " +elems[0]+ " $" + elems[1]);
                line = in.readLine();
                 count++;
            }

答案 2 :(得分:0)

我真的很惊讶当你在数组中添加White bread 1.50时如何打印elems[0]+ " $" + elems[1](请注意其间的$签名。)

不打印1 White bread,是否要在前面打印索引之前从字符串末尾截断$" + elems[1]

如果是:请尝试以下:

      int ind = 1;
      for (String breads : breadInfo){
         System.out.println(ind++ + "\t" + breads.split("\\$")[0]);
      }

请注意:breads.split("$")[0]将从存储在数组中的White bread字符串返回White bread $1.50