2016-04-13 3 views
0

Итак, у меня есть массив с 50 случайными числами, и я хочу поднять количество отсчетов, если получаю одинаковое случайное число. После всего этого подсчета я хочу посмотреть, как часто я получаю номер, но у меня, похоже, есть ошибка в методе подсчета. Таким образом, это в основном дает мне, например, больше нулей, чем в произвольно сгенерированных числах.Как повысить значение счетчика, если генерируется случайное число?

Это мой код программы:

import java.util.Random; 

public class aufgabe2 { 

    static int[] ran = new int[50]; 
    static int[] counter = new int[10]; 

    static Random r = new Random(); 

    public static void ranNums() { 
    for (int i = 0; i < ran.length; i++) { 
     ran[i] = r.nextInt(10); 
     System.out.print(ran[i] + " "); 
    } 
    } 

    public static void countSameRanNums(int[] counter) { 
    System.out.println(); 
    for (int i = 0; i < 9; i++) { 
     counter[ran[i]]++; 
     System.out.println(i + ".frequency: " + (counter[ran[i]])); 
    } 
    } 

    public static void main(String[] args) { 
    ranNums(); 
    countSameRanNums(ran); 
    } 
} 
+0

Ну, 'ran' - это массив из 50 значений, но вы только итерации первый 9. – Andreas

+0

Я думаю, он хочет генерировать от 0-9 в 50 раз и получить частоту 0-9 – logger

ответ

0

Проблема, что у вас есть это то, что вы только итерация первые 9 позиций RAN массива, который имеет 50 позиций.

Кроме того, я думаю, вам не нужны два метода, чтобы получить количество каждого случайного числа. Вы можете рассчитывать их одновременно с получением случайных значений. Посмотрите на это:

public static void ranNums() { 
    for (int i = 0; i < ran.length; i++) { 
     ran[i] = r.nextInt(10); 
     System.out.print(ran[i] + " "); 
     counter[ran[i]]++; 
    } 
} 

И после того, как вы только должны сделать петлю, чтобы получить все счетчики:

for(int j = 0; j < counter.length; j++) 
{ 
    System.out.println(j + ".frequency: " + (counter[j])); 
} 
+1

Это получилось, спасибо много для помощи я, и понимаю мою проблему, возможно, это было не так просто из-за моего слабого английского. Я действительно ценю твою помощь. –

0
import java.util.Random; 

public class aufgabe2 { 
static int[] ran = new int[50]; 
static int[] counter = new int[10]; 

static Random r = new Random(); 

public static void ranNums() { 
int counter; 
Map<Integer,Integer> map = new HashMap<Integer,Integer>(); 
for (int i = 0; i < ran.length; i++) { 
    counter = 1; 
    ran[i] = r.nextInt(10); 
    if(map.containsKey(ran[i])){ 
     map.put(ran[i], map.get(ran[i])+1); 
    } else { 
     map.put(ran[i], counter); 
    } 
} 

    Iterator<?> it = map.entrySet().iterator(); 
    while (it.hasNext()) { 
     Map.Entry pair = (Map.Entry)it.next(); 
     System.out.println(pair.getKey() + " frequency : " + pair.getValue()); 
    } 
} 

public static void main(String[] args) { 
    ranNums(); 
    } 
} 

Позвольте мне знать, если вам нужно что-нибудь выше, чтобы быть объяснена

+0

Это сработало, но это действительно сложно, и я не знаю, что такое Map, HashMap и Iterator, потому что я довольно новичок в Java, но большое спасибо за вашу помощь, и я не думаю, что вы должны это объяснить, но спасибо для показа различного метода решения проблемы. –

+0

Я могу только принять один ответ, так или иначе, я довольно новичок в форуме, извините, что я хотел принять оба. –