在我的代码中,我试图将Integerwithint作为if语句的条件进行比较,但是它返回一个NullPointerException错误。我遇到了两者等价的答案,但不大于/小于。这是我到目前为止的代码:(相关行是if (val > maxVal))import java.util.*;import java.io.*;class Untitled { public static void main(String[] args) throws FileNotFoundException { Scanner sc = new Scanner(System.in); System.out.print("Please enter filename: "); Scanner inFile = new Scanner(new File(sc.nextLine())); int maxVal = 0; String maxKey = null; TreeMap<String,Integer> tmap = new TreeMap<String,Integer>(); while (inFile.hasNextLine()) { String key = inFile.nextLine(); Integer val = tmap.get(key); tmap.put(key, (val==null) ? 1 : val+1); if (val > maxVal) { maxVal = val; maxKey = key; } } inFile.close(); System.out.println(maxKey+" "+maxVal); }}
2 回答
哆啦的时光机
TA贡献1779条经验 获得超6个赞
我看到的最简单的解决方案是将您的三元交换为val
(您也可以使用int
)的分配。另外,我更喜欢 Map.getOrDefault(Object, V)
. 喜欢,
int val = 1 + tmap.getOrDefault(key, 0);
tmap.put(key, val);
if (val > maxVal) {
maxVal = val;
maxKey = key;
}
否则,您可以在比较中重复三元(但我个人认为这很丑陋,因此我将其作为完全可选的练习留给读者)。
添加回答
举报
0/150
提交
取消