public class Demo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.nextLine(); Map<Character, Integer> m = new HashMap<>(); for (int i = 0; i < s.length() - 1; i++) { char c = s.charAt(i); if (m.get(c) != null) { int value = m.get(c); m.put(c, (value + 1)); } else { m.put(c, 1); } } Set<Map.Entry<Character,Integer>> entries=m.entrySet(); for(Map.Entry<Character,Integer> map1:entries){ System.out.println(map1.getKey()+"出现了"+map1.getValue()+"次"); } } }这个代码有什么问题
时间: 2024-02-14 19:16:27 浏览: 66
C#中static void Main(string[] args) 参数示例详解
这段代码有个潜在的问题就是只遍历了字符串中的前s.length()-1个字符,因此会漏掉最后一个字符。应该将for循环的条件改为 i < s.length():
```
for (int i = 0; i < s.length(); i++) {
// ...
}
```
此外,代码中没有对输入的字符串进行空指针判断,如果输入的字符串为null,将会抛出NullPointerException异常。可以在读取输入时进行判断:
```
String s = sc.nextLine();
if (s == null) {
// 处理空输入的情况
}
```
阅读全文