У меня цикл 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 совпадающих номеров
Я пытаюсь сделать это без array или arraylist., С которыми я знаком на данный момент.
объединить числа в строку?
Когда вы говорите «порядок ввода данных пользователем не влияет на результаты», вы имеете в виду, что «игра продолжается даже после того, как пользователь выиграл»?
См.: stackoverflow.com/help/someone-answers
в противном случае вы можете сохранить их в строковой переменной после преобразования их в строку, выполнив это
String randomNums = "";
randomNums += randomNums +" - "+ String.ValueOf(randomNumber);
Я хочу сделать это без массива или Arraylist.
в противном случае вы можете сохранить их в строковой переменной после преобразования в строку.
Я думаю, что это будет примерно так, поскольку вы не хотите хранить числа в массиве или списке массивов, вам придется работать с конкатенацией строк.
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)), иначе в конце будет напечатан знак «-»
Вот фрагмент кода, Просто продолжайте объединять случайные числа со строковой переменной
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
Поддерживать список введенных пользователем чисел и случайных чисел