Программа бросает 2 кости 20 раз. Нужно вывести в одномерном массиве сколько раз выпала каждая сумма (к примеру 1+1-2 3 раза и так до 12). Сделал бросание 20 раз и вывод суммы, но на подсчете слился, как можно исправить код?
Рабочий с подсчетом и выводом сумм:
package prr;
import java.util.Random;
public class Base {
public static void main(String[] args) {
for(int i=0;i<20;i++)
{
int x,y;
Random rand = new Random();
x=rand.nextInt(6)+1;
y=rand.nextInt(6)+1;
System.out.println(x+y);
}
}
}
Нерабочий (в котором нужно чтобы считало сколько раз выпала сумма):
package prr;
import java.util.Random;
public class Base {
public static void main(String[] args){
Random rand = new Random();
int f[] = new int [11];
for (int i = 0; i<20; i++){
int x,y;
x=rand.nextInt(6)+1;
y=rand.nextInt(6)+1;
f=x+y;
System.out.println ("Сумма\t Количество выпадений");
for(int i=0; i<f.lenght, i++){
System.out.println(i +"\t"+f[i]);
}}
}}
Желательно прикладывать текст ошибки, которая, похоже вот здесь: f=x+y;
. Поскольку f
- массив, то и обращаться вы должны не к нему, а к его непосредственному элементу по нужному индексу.
В вашем случае нужный индекс - сумма броска кубиков; но их лучше внести в массив обычной длины, поэтому их можно сдвинуть, обращаясь при записи к элементу на две позиции раньше. Для человеческого вывода можно использовать i+2
. Нормализированный код:
Random rand = new Random();
int f[] = new int [11];
for (int i = 0; i<20; i++){
int x,y;
x=rand.nextInt(6)+1;
y=rand.nextInt(6)+1;
f[(x+y)-2]++; //Увеличение счётчика для конкретно этой пары (-2 индекса)
System.out.println(i +"\t"+(x+y)); //Вывод суммы
//Внутренний цикл вам не нужен. Вы можете прямо здесь выдавать значение после броска
}
for (int i = 0; i < f.length; i++) {
System.out.println((i + 2) + ": " + f[i]);
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Собственно интересно как лучше поступать - создавать переменные с byte или с int, если известно что число никогда не будет больше границ byte;
Можно просто отфильтровать поток (если не нужно считать 0 кратным 3, нужно будет добавить ещё один фильтр):