如果在循环内不能按预期工作java

时间:2015-07-31 10:14:26

标签: java loops if-statement

我正在从文本文件中读取行(" text.txt"),然后将它们存储到树形图中,直到出现单词apply。

然而,在执行此操作后,我没有最后一行" 4申请"我想要在树形图中

的text.txt
1添加
3乘以
4申请
6添加

Scanner input = new Scanner(file);
while(input.hasNextLine()){

    String line = input.nextLine();
    String[] divline = line.split(" ");

    TreeMap<Integer, String> Values = new TreeMap();

    if(!divline[1].equals("apply"))
    {
        Values.put(Integer.valueOf(divline[0]), divline[1]);    
    } 
    else
    {
        Values.put(Integer.valueOf(divline[0]), divline[1]);
        break;
    }

    System.out.println(Values);

}

3 个答案:

答案 0 :(得分:2)

每次循环时都在创建新的地图。在while循环之前放下代码。

TreeMap<Integer, String> valores = new TreeMap();

还需要更正地图内容的打印。所以你的最终代码可以是

Scanner input = new Scanner(file);
TreeMap<Integer, String> valores = new TreeMap();
     while(input.hasNextLine()){

        String line = input.nextLine();
        String[] divline = line.split(" ");           

        if(!divline[1].equals("apply")){
            valores.put(Integer.valueOf(divline[0]), divline[1]);   
        } else {
            valores.put(Integer.valueOf(divline[0]), divline[1]);
            break;
        }             

    }

for (Entry<Integer,String> entry: valores){
   System.out.println(entry.getKey() + "- "+entry.getValue());
}

答案 1 :(得分:2)

4 apply已添加到valores地图中,但由于您在打印声明之前突然退出循环,因此无法打印。

此外,您可能需要在valores循环之前移动while地图的创建。循环后打印。

    TreeMap<Integer, String> valores = new TreeMap();

    while(input.hasNextLine()){

    String line = input.nextLine();
    String[] divline = line.split(" ");

    if(!divline[1].equals("apply")){
        valores.put(Integer.valueOf(divline[0]), divline[1]);   
    } else {
        valores.put(Integer.valueOf(divline[0]), divline[1]);
        break;
    }
    }

    System.out.println(valores);

答案 2 :(得分:1)

你正在创造一个新的&#34; valores&#34;每行TreeMap,然后打印包含该行的TreeMap。在&#39; apply&#39;的情况下你这样做,创建一个新的地图,把价值放在那里 - 只有破坏,你跳过System.out.println部分。

你需要在while之前放置TreeMap的声明。