所以我再次遇到另一个问题。一旦你阅读我的代码和输出,你就会理解我的意思。我正在尝试打印我的Array的数字及其出现次数。 !!!遗憾的是我无法使用任何导入代码...... !!!
int[] fr = new int[Bag.length];
for( int i = 0; i < Bag.length; i++ )
fr[i]++;
for( int i = 0; i < fr.length; i++ ) {
if( fr[i] > 0 )
System.out.println( "The number " + Bag[i] + " occurs " + fr[i] + " time(s).");}}
如果我在我的数组中添加5,6和5; (我创建了我的添加操作btw,所以首先我的数组是0然后变大)
输出:数字5出现1次。 数字6出现1次。 数字5出现1次。
我的添加操作btw是:
int[] Bag = new int[0];
String name = scanner.next();
if (name.equals("A")){
int number = scanner.nextInt();
NewBag[NewBag.length - 1] = number;
for(int i = 0; i < Bag.length; i++){
NewBag[i] = Bag[i];}
Bag = NewBag;
System.out.println(number + " added to Bag.");}
答案 0 :(得分:1)
最好使用Map。
Map<Integer,Integer> occurences= new HashMap<Intege,Integer>();
for( int bagValue: bag ){
int counter = occurences.hasValue(bagValue)? occurences.get(bagValue): 0;
occurences.put(bagValue, counter++)
}
这项任务会更灵活,内存要求也会降低。
答案 1 :(得分:0)
虽然你有其他问题,但这是你应该做的。
int[] fr = new int[10000];// modified
for( int i = 0; i < Bag.length; i++ )
fr[Bag[i]]++; // Here
for( int i = 0; i < fr.length; i++ ) {
if( fr[i] > 0 )
System.out.println( "The number " + Bag[i] + " occurs " + fr[i] + " time(s).");}}
问题是Bag数组的最大和最小数量是多少?说Bag=new int[10
],其范围是0-10000;然后fr=new int[10001]
;
好的,在另一个问题上,我看到你试图增加Bag的大小
int[] Bag = new int[0];
String name = scanner.next();
int[] NewBag;
if (name.equals("A")){
int number = scanner.nextInt();
NewBag = new int[Bag.length+1];// resize the array
NewBag[NewBag.length - 1] = number;
for(int i = 0; i < Bag.length; i++){
NewBag[i] = Bag[i];
}
Bag = NewBag;
System.out.println(number + " added to Bag.");
}
答案 2 :(得分:0)
如果我理解正确,你有一个整数的超集,你想知道每个int的出现次数。
为此,您必须迭代您的数组,并检查每个新int,如果它已经插入到数组中,如果是,则分别递增。
int flag = 1
for (i=0; i<Bag.length;i++){
for(j=0;j<fr.length;j++){
if(Bag[i] == fr[j]){
fr[j]++;
flag = 0;
break;
}
if(flag){
fr[i}++;
}
}