xXM*_*kXx 0 java stack-overflow random recursion
注释部分所在的位置说有StackOverflowError- null。我试图使它成为随机数以匹配输入的值。此代码的目标是执行以下操作:
码:
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++;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在guesser()方法中,您正在调用自身:
if(nums.contains(guess) && !(guess.equals(input)))
{
count--;
guesser();
}
Run Code Online (Sandbox Code Playgroud)
它很有可能永远不会结束。但是所有这些都在while循环中,所以为什么不消除重复并以迭代的方式进行呢?
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |