题目是有一个数组a,比如int [] a = {1,2,3,1,1,2,1,2,3,4},要求把出现了哪些元素,分别出现了几次,就是目的想得到这样的输出
1:4
2:3
3:2
4:1我的想法是这样的创建另外2个数组b和count,如果a中第一次出现了某个数,则放到b中去,比如放到了b[0],然后count[0]=1,如果以后再次出现此数,则count[0]++ ,如果又出现了新数,则放到b[1],然后计数count[1]=1,.......下面是我写的错误的代码,可是不知道错在哪里了
public class FindElements { static int n = 0;
public static void main(String[] args) {
int [] a = {1,2,3,1,1,2,1,2,3,4};
FindElements fe = new FindElements();
fe.getInfo(a);
}
public static boolean isIn(int a,int[] b){
for(int i=0 ; i<b.length ; i++){
if(a == b[i]){
n = i;
return true;
}
}
return false;
}
public void getInfo(int[] a){
int [] b = new int [a.length];
int [] count = new int [a.length];
int x = 0;
for(int i=0 ; i<a.length ; i++){
if(isIn(a[i],b)){
count[n]++;
}
else{
a[i] = b[x];
//System.out.print(b[x]);
count[x] = 1;
x++;
}
} printInfo(b,count);
}
public static void printInfo(int[] b,int [] count){
for(int i=0 ; i<b.length ; i++){
System.out.println(b[i] + ":" + count[i]);
}
}}输出结果为
0:1
0:1
0:1
0:1
0:1
0:1
0:1
0:1
0:1
0:1
1:4
2:3
3:2
4:1我的想法是这样的创建另外2个数组b和count,如果a中第一次出现了某个数,则放到b中去,比如放到了b[0],然后count[0]=1,如果以后再次出现此数,则count[0]++ ,如果又出现了新数,则放到b[1],然后计数count[1]=1,.......下面是我写的错误的代码,可是不知道错在哪里了
public class FindElements { static int n = 0;
public static void main(String[] args) {
int [] a = {1,2,3,1,1,2,1,2,3,4};
FindElements fe = new FindElements();
fe.getInfo(a);
}
public static boolean isIn(int a,int[] b){
for(int i=0 ; i<b.length ; i++){
if(a == b[i]){
n = i;
return true;
}
}
return false;
}
public void getInfo(int[] a){
int [] b = new int [a.length];
int [] count = new int [a.length];
int x = 0;
for(int i=0 ; i<a.length ; i++){
if(isIn(a[i],b)){
count[n]++;
}
else{
a[i] = b[x];
//System.out.print(b[x]);
count[x] = 1;
x++;
}
} printInfo(b,count);
}
public static void printInfo(int[] b,int [] count){
for(int i=0 ; i<b.length ; i++){
System.out.println(b[i] + ":" + count[i]);
}
}}输出结果为
0:1
0:1
0:1
0:1
0:1
0:1
0:1
0:1
0:1
0:1
int [] b = new int [a.length];
int [] count = new int [a.length];
int x = 0;
for(int i=0 ; i<a.length ; i++){
if(isIn(a[i],b)){
count[n]++;
}
else{
a[i] = b[x]; //System.out.print(b[x]);//应该是b[x]= a[i]
count[x] = 1;
x++;
}
}
public static void printInfo(int[] b,int [] count){
for(int i=0 ; i<b.length ; i++){
if(count[i]>0)
System.out.println(b[i] + ":" + count[i]);
}
}
public static void printInfo(int[] b,int [] count){
for(int i=0 ; i<b.length ; i++){
if(count[i]==0)break;
System.out.println(b[i] + ":" + count[i]);
}
}谢谢您!受教了!
b[x] = a[i];
//System.out.print(b[x]);
count[x] += 1;
x++;
}
查下n的值
可以采用map解决这个问题
Map<Integer,Integer> m =
new HashMap<Integer,Integer>();
for(int i = 0; i < a.length; i++) {
Integer freq = m.get(a[i]);
m.put(r, freq == null ? 1 : freq + 1);
}
你的问题估计出在这里:
a[i] = b[x];
你是想把a[i]的值赋给b[x]吧, 改写成这样b[x]= a[i];