Java:计算数组中的每个数字
我想计算数组中出现的每个数字的出现次数。我已经看到了其他答案,但我不明白为什么我的方法不起作用。我有一个随机数数组:Java:计算数组中的每个数字,java,arrays,Java,Arrays,我想计算数组中出现的每个数字的出现次数。我已经看到了其他答案,但我不明白为什么我的方法不起作用。我有一个随机数数组: int[] fält = new int[20] 这就是我所做的: public static String statistik(int[] fält) { String poäng[] = new String[20]; String output = ""; //Clear out the array: for (int i = 0; i
int[] fält = new int[20]
这就是我所做的:
public static String statistik(int[] fält) {
String poäng[] = new String[20];
String output = "";
//Clear out the array:
for (int i = 0; i < poäng.length; i++) {
poäng[i] = "";
}
//Add a star for each time a number appears
for (int i = 0; i < fält.length; i++) {
for (int t = 0; t < fält.length; t++) {
if (fält[t] == i) {
poäng[i] += "*";
}
}
}
//Print it out
for (int i = 0; i < fält.length; i++) {
output += (i + 1) + ": " + poäng[i] + "\n";
}
JOptionPane.showMessageDialog(null, output);
return "";
}
公共静态字符串statistik(int[]fält){
字符串poäng[]=新字符串[20];
字符串输出=”;
//清除阵列:
for(int i=0;i
不是所有的数字都有一颗星,结果都很奇怪。为什么?您正在检查如果(fält[t]==i)
请将其更改为如果(fält[t]==fält[i])
您正在检查如果(fält[t]==i)
请将其更改为如果(fält[t]==fält[i])
这一行:
output += (i + 1) + ": " + poäng[i] + "\n";
这将开始打印“1:”但从0开始计数,这就是为什么输出看起来很奇怪
public static String statistik(int[] fält) {
String poäng[] = new String[fält.length];
String output = "";
//Clear out the array:
for (int i = 0; i < poäng.length; i++) {
poäng[i] = "";
}
//Add a star for each time a number appears
for (int i = 0; i < fält.length; i++) {
for (int t = 0; t < fält.length; t++) {
if (fält[t] == i) {
poäng[i] += "*";
}
}
}
//Print it out
for (int i = 0; i < fält.length; i++) {
output += i + ": " + poäng[i] + "\n";
}
System.out.println(output);
return "";
}
公共静态字符串statistik(int[]fält){
字符串poäng[]=新字符串[fält.length];
字符串输出=”;
//清除阵列:
for(int i=0;i
此行:
output += (i + 1) + ": " + poäng[i] + "\n";
这将开始打印“1:”但从0开始计数,这就是为什么输出看起来很奇怪
public static String statistik(int[] fält) {
String poäng[] = new String[fält.length];
String output = "";
//Clear out the array:
for (int i = 0; i < poäng.length; i++) {
poäng[i] = "";
}
//Add a star for each time a number appears
for (int i = 0; i < fält.length; i++) {
for (int t = 0; t < fält.length; t++) {
if (fält[t] == i) {
poäng[i] += "*";
}
}
}
//Print it out
for (int i = 0; i < fält.length; i++) {
output += i + ": " + poäng[i] + "\n";
}
System.out.println(output);
return "";
}
公共静态字符串statistik(int[]fält){
字符串poäng[]=新字符串[fält.length];
字符串输出=”;
//清除阵列:
for(int i=0;i
1)嗨,@Habbo,这是因为平面[]数组只包含0
2) 只有在第一次迭代中,i值才会为0,然后它就再也不会为零了
if (fält[t] == i) {
poäng[i] += "*";
}
4) 所以这个“我”里面的poäng[i]只会为零,永远不会增加
5) 这就是为什么会出现奇怪的结果。1)嗨,@Habbo,这是因为平面[]数组只包含0
2) 只有在第一次迭代中,i值才会为0,然后它就再也不会为零了
if (fält[t] == i) {
poäng[i] += "*";
}
4) 所以这个“我”里面的poäng[i]只会为零,永远不会增加
5) 这就是产生奇怪结果的原因您应该更改输出消息 从输出+=(i+1)+“:“+poäng[i]+”\n” 输出+=i+“:“+poäng[i]+”\n” 我认为你可以优化你的代码 首先按排序,这将花费2个循环 然后像这样在排序的数组上循环
int temp= fält[0];
output = temp + ": *";
for (int i = 1; i < fält.length; i++) {
if(fält[i] >temp){
temp = fält[i];
output +="\n"+ temp + ": *";
}
else{
output +="*";
}
}
int temp=fält[0];
输出=温度+“:*”;
for(int i=1;i温度){
温度=fält[i];
输出+=“\n”+温度+”:*”;
}
否则{
输出+=“*”;
}
}
代码中只有3个循环,而不是4个。您应该更改输出消息 从输出+=(i+1)+“:“+poäng[i]+”\n” 输出+=i+“:“+poäng[i]+”\n” 我认为你可以优化你的代码 首先按排序,这将花费2个循环 然后像这样在排序的数组上循环
int temp= fält[0];
output = temp + ": *";
for (int i = 1; i < fält.length; i++) {
if(fält[i] >temp){
temp = fält[i];
output +="\n"+ temp + ": *";
}
else{
output +="*";
}
}
int temp=fält[0];
输出=温度+“:*”;
for(int i=1;i温度){
温度=fält[i];
输出+=“\n”+温度+”:*”;
}
否则{
输出+=“*”;
}
}
如果(fält[t]==fält[i]),代码中只有3个循环,而不是4个。虽然Java确实支持unicode变量名,但我强烈建议您坚持使用ASCII,因为这将避免平台特定的编码问题。至于具体问题-
fält[t]==i
。我把它作为一个练习留给你们去找出原因。我还要注意的是,首先对数组进行排序可以使代码更快—我还是让您自己决定。@BoristheSpider为什么它是错误的?我没能通过你的练习。@Habbo你需要学习,不要用勺子舀。拿一支铅笔和一张纸,在每一次n^2
迭代中,用一个大小为3的数组准确地写出这段代码的作用。提示:不要在数组中使用小于3的任何数字。如果(fält[t]==fält[i]),请尝试使用if(fält[t]==fält[i])?虽然Java确实支持unicode变量名,但我强烈建议您坚持使用ASCII,因为这将避免平台特定的编码问题。至于具体问题-fält[t]==i
是错误的。我把它作为一个练习留给你们去找出原因。我还要注意的是,首先对数组进行排序可以使代码更快—我还是让您自己决定。@BoristheSpider为什么它是错误的?我没能通过你的练习。@Habbo你需要学习,不要用勺子舀。拿一支铅笔和一张纸,在每一次n^2
迭代中,用一个大小为3的数组准确地写出这段代码的作用。提示:不要在数组中使用小于3的任何数字。