我正在从文本文件中读取行(" 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);
}
答案 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的声明。