Нужно суммировать цифры в случайных числах из цикла

Я случайным образом генерирую трехзначные числа, используя java.util.Random(). Количество случайных трехзначных чисел, которые печатает система, контролируется пользователем. Вот код:

//If/then statement for determining game type (determines 3 digit numbers)
if (gameType == 3) 

//for loop to generate random numbers (numGames is how many 3 digit numbers     to print)
for (int i = 1; i <=numGames; i = i + 1){

int ranNums = randomGenerator.nextInt((999 - 100) + 1) + 100; 

//Print random numbers to user
System.out.println(ranNums);

sumNums = ranNums % 10;

По сути, я хочу, чтобы код добавлял ЦИФРЫ, которые печатаются из генератора случайных чисел. Например, если вывод ranNums равен 111 и 111, я хочу, чтобы переменная sumNums равнялась 6, а не 222. С кодом, который у меня есть сейчас, он добавляет только последнюю цифру каждого числа (в этом случае 1 + 1 = 2 ).


person StevenC    schedule 23.10.2015    source источник
comment
Вместо того, чтобы генерировать случайные целые числа и разбивать их на отдельные цифры, почему бы просто не генерировать случайные цифры и хранить их отдельно? Другими словами, вместо того, чтобы генерировать [111,234], почему бы не генерировать [[1,1,1],[2,3,4]], чтобы цифры уже были разделены?   -  person mbeckish    schedule 23.10.2015
comment
Я тоже готов сделать это, но я не уверен, как бы я написал код для этого. Вы можете помочь?   -  person StevenC    schedule 23.10.2015
comment
Попрактикуйтесь в работе с коллекциями, такими как массивы, списки и т. д. Дойдите до того момента, когда вы сможете создать коллекцию коллекций, а затем составить список из трехэлементных массивов. Остальное просто - случайным образом сгенерируйте цифры от 1 до 9 для первой из 3 цифр, от 0 до 9 для второй и третьей цифр.   -  person mbeckish    schedule 23.10.2015
comment
Я все еще в замешательстве. В конечном счете, вот что я делаю... Я принимаю пользовательский ввод для имитации лотерейной игры. Пользователь вводит 3, затем игра выбирает 3 (3 числа). Затем пользователь вводит, сколько игр он хочет сыграть. Например, если они выберут 10 игр, то система сгенерирует для них 10 наборов из 3 номеров. Мне нужно, чтобы это было просто, без использования массивов, потому что это будет опережать темы, которые мы еще не рассмотрели в классе. Так есть ли лучший способ сделать это, чем просто генерировать трехзначное число для каждой игры?   -  person StevenC    schedule 23.10.2015
comment
Да, делайте вложенные циклы. Внешний цикл идет от 1..numGames, внутренний цикл идет от 1..gameType. Внутри внутреннего цикла сгенерируйте случайную цифру и добавьте к сумме. Во внешнем цикле напечатайте сумму и обнулите сумму.   -  person mbeckish    schedule 24.10.2015


Ответы (1)


Вы можете сделать это:

sumNums = (n / 100) + (n / 10 % 10) + (n % 10);
person ergonaut    schedule 23.10.2015
comment
Это работает! Теперь мне просто нужно выяснить, как применить его ко всем числам, сгенерированным циклом. Сейчас это относится только к последнему сгенерированному номеру. - person StevenC; 23.10.2015
comment
Исправьте {} для цикла for, и он должен работать для всех сгенерированных чисел. - person Swastik Padhi; 23.10.2015
comment
просто используйте ranNums вместо n - person ergonaut; 23.10.2015
comment
Правильно - сделал это, но это все равно добавляет только второе число... Я знаю, что ответ прямо перед моим лицом, но я волнуюсь и начинаю обдумывать его.... - person StevenC; 23.10.2015
comment
//Инструкция If/then для определения типа игры if (gameType == 3) //цикл for для генерации случайных чисел for (int i = 1; i ‹=numGames; i = i + 1){ ranNums = randomGenerator.nextInt( (999 - 100) + 1) + 100; // Печатаем случайные числа пользователю System.out.println(ranNums); sumNums = (ranNums / 100) + (ranNums / 10 % 10) + (ranNums % 10); } - person StevenC; 24.10.2015
comment
укажите это в вопросе, пожалуйста - person ergonaut; 24.10.2015
comment
Извините - я все еще здесь новенький :) На самом деле, я думаю, что лучший способ добиться этого - сгенерировать 3 цифры, которые НЕ являются числом. Например, как мне сгенерировать 1 2 3 вместо 123? - person StevenC; 24.10.2015