帮我解一下6.3题 JAVA题

如题所述

假设是一次性输入所有数字,数字中间是空格隔开。

Scanner sc = new Scanner(System.in);
String inputStr = sc.next();
String[] arrs = inputStr.split(" ");
Map<String, Integer> map = new HashMap<String, Integer>();
for(String s : arrs) {
if("0".equals(s)) break;
Integer count = map.get(s);
if(count == null) {
count = 1;
}else {
count++;
}
map.put(s, count);
}

for(Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + " occurs " + entry.getValue() + " times");
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-06-02
import java.util.ArrayList;
import java.util.HashSet;

public class IntegerTest {
public static void main(String[] args) {

// 用户输入
// Scanner input = new Scanner(System.in);
// String str = input.nextLine();

// 直接读取
String str = "2 5 6 5 4 3 23 43 2 0";
System.out.println("Enter the integers between 1 and 100:" + str);

IntegerTest.statTimes(str);
}

static void statTimes(String param) {
if (param == null)
return;

// hashset保存不重复的值 因此
HashSet<String> hSet = new HashSet<String>();

String[] strArr = param.split(" ");
for (String str : strArr) {
hSet.add(str);
}

ArrayList<String> list = new ArrayList<String>(hSet);

// for(String c : list){
// System.out.println(c);
// }

int n = hSet.size(); // 有多少种字符

int[] times = new int[n]; // 保存每种字符的出现次数

for (String c : strArr)
// 进行统计
times[list.indexOf(c)]++;

for (int i = 0; i < n; i++)
System.out.println(list.get(i) + " occurs " + times[i] + " times");
// 打印结果

}
}
//结果
Enter the integers between 1 and 100:2 5 6 5 4 3 23 43 2 0
3 occurs 1 times
2 occurs 2 times
0 occurs 1 times
43 occurs 1 times
6 occurs 1 times
5 occurs 2 times
4 occurs 1 times
23 occurs 1 times
欢迎继续提问
第2个回答  2015-06-02
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Input{

private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

public static String getString(){
try {
return br.readLine();
} catch (IOException e) {
return "";
}
}

public static void main(String[] args) {
System.out.print("Enter the integers between 1 and 100: ");
String input = getString();
String[] inputs = input.split(" ");

int[] index = new int[100]; //用来记录1-100的出现次数
for(int i=0; i<inputs.length; i++){
int no = Integer.parseInt(inputs[i]);
if (no > 0 && no <= 100) { //如果当前输入的数大于0,并且小于100
index[no-1]++; //因数数组是从零开始,所以存放的数组下标要减1
}
}


for(int i=0; i<index.length; i++){
if(index[i] >0){
System.out.println(i+1 + "\toccurs\t" + index[i] + " time");
}
}
}


}

第3个回答  2015-06-02
数字是一个一个输入还是一起输入,中间用空格隔开?追问

中间用空格隔开

追答

import java.util.*;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter the integers between 1 and 100:");
String input = sc.nextLine();
String[] array = input.split(" ");//将输入的数字用空格分开,组成数组
Map map = new HashMap();//map键存出现的数字,值存该数字出现的次数
//遍历数组
for(String s : array) {
if("0".equals(s)){
break;
}else{
if(map.containsKey(s)){//如果map已存在key,则在值上加1
map.put(s, map.get(s)+1);
}else{
map.put(s, 1);//不存在key,设值为1
}
}
}
for (String it : map.keySet()) {
System.out.println(it + " occurs " + map.get(it) + " times");
}
}
}

追问

但是这个出来的时候不按顺序出来

相似回答
大家正在搜