Java - печать всех случайных чисел в последней строке цикла while

У меня цикл while работает и обрабатывается правильно. Когда числа, введенные пользователем, не совпадают со случайным числом, код распечатывает «Извините ... (и продолжает объяснять правильное число)» каждый раз, когда пользователь ошибается. Однако я не могу заставить код распечатать те же самые точные случайные числа в самом конце последнего цикла перед его завершением. Какие-либо предложения?

   while (counter < 6)
        {
          counter++;
          System.out.println("Enter a number between 1-60: ");
          userInput = scan.nextInt();
          if (userInput > 60 || userInput < 1)
            System.out.println("Invalid input");

          int randomNumber = (int) (Math.random() * 60) + 1;
          if (userInput == randomNumber)
            System.out.println("Congrats, you have won!");
        else
          System.out.println("Sorry, you didn't choose the winning number." + "The winning number is " + randomNumber + ".");
        }

Внизу кода указан выигрышный номер, но я хочу, чтобы все те же точные случайные числа (которые были рандомизированы ранее) отображались в конце шестого цикла. Кроме того, порядок ввода данных пользователем не влияет на результаты. Если пользователь выберет 1-13-8-34-56-2, а компьютер придумал 1-8-56-2-14-34… все равно будет 5 совпадающих номеров

Поддерживать список введенных пользователем чисел и случайных чисел

Ayush Khare 31.10.2018 03:28

Я пытаюсь сделать это без array или arraylist., С которыми я знаком на данный момент.

Pkd 31.10.2018 03:29

объединить числа в строку?

Scary Wombat 31.10.2018 03:35

Когда вы говорите «порядок ввода данных пользователем не влияет на результаты», вы имеете в виду, что «игра продолжается даже после того, как пользователь выиграл»?

Kevin Anderson 31.10.2018 03:39

См.: stackoverflow.com/help/someone-answers

c0der 19.02.2019 15:40
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
5
90
3

Ответы 3

в противном случае вы можете сохранить их в строковой переменной после преобразования их в строку, выполнив это

  String randomNums = "";
  randomNums += randomNums +" - "+ String.ValueOf(randomNumber); 

Я хочу сделать это без массива или Arraylist.

Pkd 31.10.2018 03:32

в противном случае вы можете сохранить их в строковой переменной после преобразования в строку.

Lyes 31.10.2018 03:36

Я думаю, что это будет примерно так, поскольку вы не хотите хранить числа в массиве или списке массивов, вам придется работать с конкатенацией строк.

string keepValue = "";
while (counter < 6)
        {
      counter++;
      System.out.println("Enter a number between 1-60: ");
      userInput = scan.nextInt();
      if (userInput > 60 || userInput < 1)
        System.out.println("Invalid input");

      int randomNumber = (int) (Math.random() * 60) + 1;
      keepValue=keepValue+randomNumber+"-";


      if (userInput == randomNumber)
        System.out.println("Congrats, you have won!");
    else
        System.out.println("Sorry, you didn't choose the winning number." + "The 
        winning number is " + randomNumber + ".");
    }
System.out.println(keepValue.substring(0, keepValue.length() - 1));

Надеюсь, это даст вам представление о том, как ее решить

system.out.println (keepValue) должен быть system.out.println (keepValue.substring (0, keepValue.length () - 1)), иначе в конце будет напечатан знак «-»

Gayan Mettananda 31.10.2018 07:49

Вот фрагмент кода, Просто продолжайте объединять случайные числа со строковой переменной

import java.util.Scanner;
public class RandomNumbers{

     public static void main(String []args){
        int counter =0;
        int userInput=0;
        String userEntries = "";
        String randomEntries = "";
        Scanner scan=new Scanner(System.in);
        while (counter < 6)
        {
          counter++;
          System.out.println("Enter a number between 1-60: ");
          userInput = scan.nextInt();
          if (userInput > 60 || userInput < 1)
            System.out.println("Invalid input");

          int randomNumber = (int) (Math.random() * 60) + 1;
          if (userInput == randomNumber)
            System.out.println("Congrats, you have won!");
        else
          System.out.println("Sorry, you didn't choose the winning number." + "The winning number is " + randomNumber + ".");
          userEntries+=userInput+ ((counter < 5) ? "-" : "");
          randomEntries+=randomNumber+((counter < 5) ? "-" : "");
        }
        System.out.println(userEntries);
        System.out.println(randomEntries);
     }
}

ВЫХОД:

Enter a number between 1-60: 
Sorry, you didn't choose the winning number.The winning number is 28.
Enter a number between 1-60: 
Sorry, you didn't choose the winning number.The winning number is 39.
Enter a number between 1-60: 
Sorry, you didn't choose the winning number.The winning number is 13.
Enter a number between 1-60: 
Sorry, you didn't choose the winning number.The winning number is 13.
Enter a number between 1-60: 
Sorry, you didn't choose the winning number.The winning number is 8.
Enter a number between 1-60: 
Sorry, you didn't choose the winning number.The winning number is 42.
1-2-3-4-56
28-39-13-13-842

Другие вопросы по теме