Scanner sc = new Scanner(System.in); String s = sc.nextLine(); TreeMap<Character, Integer> map = new TreeMap<>(); for (int i = 0; i < s.length(); i++) { if ( map.containsKey(s.charAt(i))){ map.put(s.charAt(i), map.get(s.charAt(i)) + 1); }else { map.put(s.charAt(i), map.get(s.charAt(i)) + 1); } System.out.println(map);
时间: 2024-03-03 19:50:21 浏览: 59
这段代码的功能是读取用户输入的字符串,统计每个字符在字符串中出现的次数,并将结果存储在一个 TreeMap 中。具体来说,代码首先创建一个 Scanner 对象来读取用户输入的字符串,然后使用 nextLine() 方法读取一行输入。
接下来,代码创建一个 TreeMap 对象来存储字符和它们的出现次数。在 for 循环中,代码遍历字符串中的每个字符。如果字符已经存在于 TreeMap 中,代码将该字符的计数器加一。否则,代码将该字符添加到 TreeMap 中,并将计数器初始化为 1。
需要注意的是,这段代码存在一个错误。在 else 分支中,代码应该将计数器初始化为 1,而不是从 TreeMap 中获取字符的计数器值并加一。修改后的代码如下:
```
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
TreeMap<Character, Integer> map = new TreeMap<>();
for (int i = 0; i < s.length(); i++) {
if (map.containsKey(s.charAt(i))) {
map.put(s.charAt(i), map.get(s.charAt(i)) + 1);
} else {
map.put(s.charAt(i), 1);
}
}
System.out.println(map);
```
相关问题
import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String N = scanner.nextLine(); Set<Character> digits = new HashSet<>(); for (char c : N.toCharArray()) { digits.add(c); } Map<Character, Integer> count = new TreeMap<>(); for (char c : digits) { count.put(c, 0); } for (char c : N.toCharArray()) { count.put(c, count.get(c) + 1); } for (char c : digits) { System.out.println(c + ":" + count.get(c)); } } }这一段代码的 for (char c : N.toCharArray()) { count.put(c, count.get(c) + 1); }是什么意思
这段代码的意思是遍历字符串N中的每一个字符,将字符作为键,该字符出现的次数作为值存储到Map count中。如果该字符在Map count中已经存在,则将该字符对应的值加1,否则将该字符添加到Map count中,并将该字符对应的值设为1。最终,Map count中保存了字符串N中每个字符出现的次数。
import java.util.*; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); String s = null; HashMap<String, Student> Sites = new HashMap<String, Student>(); while (!"end".equals(s)){ s = input.nextLine(); if (!"end".equals(s)){ String [] sr = s.split(" "); Student student = new Student(sr[1],Integer.parseInt(sr[2])); Sites.put(sr[0],student); } else break; } } } class Student{ private String name; private int scores; public Student(String name, int scores) { this.name = name; this.scores = scores; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getScores() { return scores; } public void setScores(int scores) { this.scores = scores; } }将这个按学号排序
要按学号排序,可以使用 TreeMap 来代替 HashMap,因为 TreeMap 是有序的键值对集合,可以按键自然顺序或者指定的比较器进行排序。在这里,我们可以指定一个比较器来按学号进行排序,具体实现如下:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String s = null;
TreeMap<String, Student> sites = new TreeMap<>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
}); // 使用 TreeMap 替换 HashMap,并指定比较器按学号排序
while (!"end".equals(s)) {
s = input.nextLine();
if (!"end".equals(s)) {
String[] sr = s.split(" ");
Student student = new Student(sr[1], Integer.parseInt(sr[2]));
sites.put(sr[0], student);
} else
break;
}
// 遍历 TreeMap,输出学生信息
for (Map.Entry<String, Student> entry : sites.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue().getName() + " " + entry.getValue().getScores());
}
}
}
class Student {
private String name;
private int scores;
public Student(String name, int scores) {
this.name = name;
this.scores = scores;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScores() {
return scores;
}
public void setScores(int scores) {
this.scores = scores;
}
}
```
在这个程序中,我们使用 TreeMap 来替换 HashMap,并指定一个比较器来按学号进行排序。在遍历 TreeMap 时,会按照学号的顺序输出学生信息。
阅读全文