我如何更改此进入私人空白? 它目前处于公共静态空白状态。主要问题是在私有虚空中它无法读取字符串。我对编程很陌生,所以如果这很容易,请耐心等待。
import java.util.Arrays;
import java.util.HashMap;
public class FrequencyPrint {
public static void main(String[] args) {
String s = "ccrrcdcffcghijk";
HashMap<Character, Integer> hashMap = new HashMap<Character, Integer>();
for (int i = 0; i < s.length(); i++) {
if (hashMap.containsKey(s.charAt(i))) {
int value = hashMap.get(s.charAt(i));
hashMap.put(s.charAt(i), ++value);
} else {
hashMap.put(s.charAt(i), 1);
}
}
Character keys[] = Arrays.copyOf(hashMap.keySet().toArray(), hashMap
.keySet().toArray().length, Character[].class);
Integer values[] = Arrays.copyOf(hashMap.values().toArray(), hashMap
.values().toArray().length, Integer[].class);
for (int i = 0; i < keys.length; i++) {
int x = FrequencyPrint.findmax(values);
for (int j = 0; j < values[x]; j++) {
System.out.print(keys[x]);
}
values[x] = 0;
}
}
public static int findmax(Integer values[]) {
int max = 0;
for (int i = 0; i < values.length; i++) {
if (values[i] > values[max]) {
max = i;
}
}
return max;
}
}
答案 0 :(得分:0)
import java.util.Arrays;
import java.util.HashMap;
public class FrequencyPrint {
public static void main(String[] args) {
FrequencyPrint fP = new FrequencyPrint();
fP.readStrings();
}
private void readStrings() {
String s = "ccrrcdcffcghijk";
HashMap<Character, Integer> hashMap = new HashMap<Character, Integer>();
for (int i = 0; i < s.length(); i++) {
if (hashMap.containsKey(s.charAt(i))) {
int value = hashMap.get(s.charAt(i));
hashMap.put(s.charAt(i), ++value);
} else {
hashMap.put(s.charAt(i), 1);
}
}
Character keys[] = Arrays.copyOf(hashMap.keySet().toArray(), hashMap
.keySet().toArray().length, Character[].class);
Integer values[] = Arrays.copyOf(hashMap.values().toArray(), hashMap
.values().toArray().length, Integer[].class);
for (int i = 0; i < keys.length; i++) {
int x = this.findmax(values);
for (int j = 0; j < values[x]; j++) {
System.out.print(keys[x]);
}
values[x] = 0;
}
}
private int findmax(Integer values[]) {
int max = 0;
for (int i = 0; i < values.length; i++) {
if (values[i] > values[max]) {
max = i;
}
}
return max;
}
}
答案 1 :(得分:0)
您想返回一个int,但是您传递一个Integer []作为参数。你基本上有4个选项
保持方法不变(建议..)。现在,如果您一直希望将返回类型保留为私有空,那么
- 醇>
在main()中创建FrequenceyPrint的对象,使用对象的引用调用findMax(),传递一个Integer / object。 将int / Integer封装为参数。改变对象 在findMax中引用引用,你的main()将返回 数据