Там, где находится закомментированный раздел, написано, что есть StackOverflowError
- null
.Я пытаюсь заставить это сделать случайные числа, чтобы соответствовать с введенным значением.Целью этого кода является следующее:
- Примите верхнее число (т.е. 1000, чтобы иметь шкалу (1-1000)).
- Примите ввод в качестве числа, чтобы компьютер угадал.
- Компьютер случайным образом угадывает первое число и проверяет, правильно ли оно.
- Если это не правильно, он должен пройти через цикл и случайным образом угадывать числа, добавляя их в ArrayList, пока он не угадает ввод.Он должен проверить, находится ли предположение в массиве, и сгенерирует другое случайное число, пока оно не появится в списке, которого нет в списке.
- В конце он напечатает количество итераций с переменной count .
Код:
import java.util.*;
public class ArrNumGuess
{
public static Integer top, input, guess, count;
public static ArrayList <Integer> nums;
public static void main ()
{
System.out.println("Please enter the top number");
top = (new Scanner(System.in)).nextInt();
System.out.println("Please enter the number to guess (1 - " + top + ")");
input = Integer.parseInt(((new Scanner(System.in)).nextLine()).trim());
nums = new ArrayList<Integer>(); //use nums.contains(guess);
guess = (new Random()).nextInt(top) + 1;
nums.add(guess);
System.out.println("My first guess is " + guess);
count = 1;
if(guess != input)
{
guesser();
}
System.out.println("It took me " + count + " tries to find " + guess + " and " + input);
}
public static void guesser()
{
boolean check = false;
while(!check)
{
guess = (new Random()).nextInt(top) + 1; //Stack Overflow - null
if(nums.contains(guess) && !(guess.equals(input)))
{
count--;
guesser();
}
else if(guess.equals(input))
{
check = true;
System.out.println("My guess was " + guess);
// nums.add(guess);
count++;
}
else
{
System.out.println("My guess was " + guess);
nums.add(guess);
count++;
}
}
}
}