我的代码是单独写出事件

时间:2014-10-05 18:00:40

标签: java arrays

所以我再次遇到另一个问题。一旦你阅读我的代码和输出,你就会理解我的意思。我正在尝试打印我的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.");}

3 个答案:

答案 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}++;
    }
}