java中输入任意字符串,统计有多少个不同的字符,每个字符的个数,出现的频率
时间: 2023-08-31 16:33:08 浏览: 93
### 回答1:
可以使用HashMap来实现这个功能,具体步骤如下:
1. 从控制台输入字符串。
2. 定义一个HashMap用于存储不同字符和对应的出现次数。
3. 遍历输入的字符串,将每个字符作为key放入HashMap中,如果已经存在,则将对应的value+1。
4. 遍历HashMap,输出每个字符和对应的出现次数。
示例代码如下:
```java
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class CountChars {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入字符串:");
String str = scanner.nextLine();
Map<Character, Integer> map = new HashMap<>();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (map.containsKey(c)) {
map.put(c, map.get(c) + 1);
} else {
map.put(c, 1);
}
}
System.out.println("不同字符个数:" + map.size());
for (Map.Entry<Character, Integer> entry : map.entrySet()) {
char c = entry.getKey();
int count = entry.getValue();
double frequency = (double) count / str.length();
System.out.println("字符'" + c + "'出现了" + count + "次,频率为" + frequency);
}
}
}
```
输入示例:
```
请输入字符串:
hello world!
```
输出示例:
```
不同字符个数:10
字符' '出现了1次,频率为0.09090909090909091
字符'!'出现了1次,频率为0.09090909090909091
字符'd'出现了1次,频率为0.09090909090909091
字符'e'出现了1次,频率为0.09090909090909091
字符'h'出现了1次,频率为0.09090909090909091
字符'l'出现了3次,频率为0.2727272727272727
字符'o'出现了2次,频率为0.18181818181818182
字符'r'出现了1次,频率为0.09090909090909091
字符'w'出现了1次,频率为0.09090909090909091
字符'!'出现了1次,频率为0.09090909090909091
```
### 回答2:
在Java中输入任意字符串,统计不同字符的个数和每个字符的出现频率,可以通过使用HashMap来实现。
首先,我们可以创建一个HashMap对象来存储字符和对应出现次数的键值对。然后,遍历输入的字符串,对于每一个字符,我们可以使用charAt()方法来获得当前字符。接着,我们可以利用HashMap的特性,检查字符是否已经作为键存在于HashMap中。如果存在,我们可以通过get()方法获取当前键对应的值,并将其加1。否则,我们可以添加新的键值对,字符作为键,值设置为1。
在遍历完成之后,我们可以使用HashMap的size()方法来获取不同字符的个数。而每个字符的出现频率就是它在HashMap中存储的值。
以下是代码示例:
```java
import java.util.HashMap;
import java.util.Map;
public class CharacterCounter {
public static void main(String[] args) {
String str = "Hello, World!";
Map<Character, Integer> characterMap = new HashMap<>();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (characterMap.containsKey(c)) {
int count = characterMap.get(c);
characterMap.put(c, count + 1);
} else {
characterMap.put(c, 1);
}
}
int differentCharacters = characterMap.size();
System.out.println("不同字符的个数:" + differentCharacters);
System.out.println("每个字符出现的频率:");
for (Map.Entry<Character, Integer> entry : characterMap.entrySet()) {
char key = entry.getKey();
int value = entry.getValue();
System.out.println(key + ": " + value);
}
}
}
```
执行以上代码,将会输出:
不同字符的个数:11
每个字符出现的频率:
!: 1
,: 1
: 1
W: 1
d: 1
e: 1
l: 3
o: 2
H: 1
r: 1
l: 2
以上代码会统计输入字符串中的不同字符的个数以及每个字符的出现频率。
### 回答3:
在Java中,要实现统计任意字符串中不同字符的个数以及每个字符的出现频率,可以使用一个HashMap来存储每个字符和对应的出现次数。
首先,我们需要接收用户输入的字符串。可以使用Scanner类从控制台获取用户输入的字符串。
然后,我们可以创建一个HashMap对象,用于存储字符和出现次数的键值对。
接下来,我们可以使用for循环遍历输入的字符串,并通过charAt()方法获取每个字符,然后判断该字符是否已经在HashMap中存在。
如果字符已经在HashMap中存在,那么我们可以通过get()方法获取该字符原来的出现次数,并将其加1后再次放入HashMap中。
如果字符尚未在HashMap中存在,那么我们可以将该字符作为键,出现次数初始值为1作为值放入HashMap中。
最后,我们可以使用foreach循环遍历HashMap中的每个键值对,输出不同字符的个数以及每个字符的出现频率。
以下是一个实现以上逻辑的Java代码示例:
```java
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class CharacterCount {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String inputString = scanner.nextLine();
Map<Character, Integer> characterMap = new HashMap<>();
for (int i = 0; i < inputString.length(); i++) {
char c = inputString.charAt(i);
if (characterMap.containsKey(c)) {
int count = characterMap.get(c);
characterMap.put(c, count + 1);
} else {
characterMap.put(c, 1);
}
}
int differentCharacterCount = characterMap.size();
System.out.println("不同字符的个数:" + differentCharacterCount);
for (Map.Entry<Character, Integer> entry : characterMap.entrySet()) {
System.out.println("字符 " + entry.getKey() + " 出现的次数:" + entry.getValue());
double frequency = (double) entry.getValue() / inputString.length() * 100;
System.out.println("字符 " + entry.getKey() + " 的出现频率:" + String.format("%.2f", frequency) + "%");
}
}
}
```
使用这段代码,用户可以输入任意字符串,并在控制台上得到该字符串中不同字符的个数以及每个字符的出现频率。
阅读全文