Java:找不到适合Scanner(int)的构造函数

Java:找不到适合Scanner(int)的构造函数,java,object,netbeans,int,java.util.scanner,Java,Object,Netbeans,Int,Java.util.scanner,我正在开发一个程序,需要生成一个三位数的随机数,然后扫描其中的每一个数字,以便与猜测游戏的输入进行比较 我初始化了实例变量,只是没有把它们放在这里。我也有其他的方法,我不认为这会影响我现在的问题 老实说,我对编程和Java相当陌生,所以它可能比我想象的要简单得多。但我的问题是,当我创建一个名为randScan的Scanner对象并尝试将其设置为扫描我的secretNumber对象(随机生成)时,我会得到一个错误,上面写着“没有为Scanner(int)找到合适的构造函数…”,然后在它下面还有很多

我正在开发一个程序,需要生成一个三位数的随机数,然后扫描其中的每一个数字,以便与猜测游戏的输入进行比较

我初始化了实例变量,只是没有把它们放在这里。我也有其他的方法,我不认为这会影响我现在的问题

老实说,我对编程和Java相当陌生,所以它可能比我想象的要简单得多。但我的问题是,当我创建一个名为randScan的Scanner对象并尝试将其设置为扫描我的secretNumber对象(随机生成)时,我会得到一个错误,上面写着“没有为Scanner(int)找到合适的构造函数…”,然后在它下面还有很多其他错误(太多无法键入)。我只是不明白为什么它不会扫描随机数,因为它是一个整数

任何帮助都将不胜感激!:)

import java.util.Random;
导入java.util.Scanner;
导入javax.swing.JOptionPane;
//生成三个随机的单位数整数。第一个不能为零
//这三种情况都将不同。由公共方法play()调用
公共字符串generateScretNumber()
{
做
{   
secretNumber=(int)(generator.nextInt(888)+101);
//扫描随机整数

Scanner randScan=new Scanner(secretNumber);//如果您只是想获取secretNumber的三位数字(作为整数值),您可以使用:

num1 = secretNumber / 100;
num2 = (secretNumber / 10) % 10;
num3 = secretNumber % 10;
这里不需要转换为使用字符串。另一方面,如果您不需要
secretNumber
本身,您当然只需要生成三个介于1和9之间的数字。最简单的方法是使用以下内容:

List<Integer> digits = new ArrayList<Integer>();
for (int i = 1; i <= 9; i++) {
    digits.add(i);
}
Collections.shuffle(digits, generator);

如果您只是尝试获取
secretNumber
的三位数字(作为整数值),您可以使用:

num1 = secretNumber / 100;
num2 = (secretNumber / 10) % 10;
num3 = secretNumber % 10;
这里不需要转换为使用字符串。另一方面,如果您不需要
secretNumber
本身,您当然只需要生成三个介于1和9之间的数字。最简单的方法是使用以下内容:

List<Integer> digits = new ArrayList<Integer>();
for (int i = 1; i <= 9; i++) {
    digits.add(i);
}
Collections.shuffle(digits, generator);
:

对于单个数字,您可能应该使用
string.valueOf(yourInt)
传递字符串:


对于单个数字,您可能应该通过
string.valueOf(yourInt)
传递字符串。您应该通过

String secretNumberString = new String(secretNumber);
作为字符串,然后您需要尝试
根据文件

Returns true if the next token in this scanner's input can be 
interpreted as an int value in the default radix using the nextInt() method.
The scanner does not advance past any input.

所以我想这可能会解决你的问题
所以你的代码应该是

secretNumber = (int)(generator.nextInt(888)+101) ;              
       String secretNumberString = new String(secretNumber);
       Scanner randScan = new Scanner(secretNumberString) ;  
        if(randScan.hasNextInt())
            num1 = randScan.nextInt();
           //Remaining code

您应该通过

String secretNumberString = new String(secretNumber);
作为字符串,然后您需要尝试
根据文件

Returns true if the next token in this scanner's input can be 
interpreted as an int value in the default radix using the nextInt() method.
The scanner does not advance past any input.

所以我想这可能会解决你的问题
所以你的代码应该是

secretNumber = (int)(generator.nextInt(888)+101) ;              
       String secretNumberString = new String(secretNumber);
       Scanner randScan = new Scanner(secretNumberString) ;  
        if(randScan.hasNextInt())
            num1 = randScan.nextInt();
           //Remaining code

为什么您需要
扫描仪
?我需要使用它与另一个3位数输入进行比较,因此我使用扫描仪将每个数字分开,并将其与三位数猜测输入进行对比,以便打印“提示”对于他们正确猜测的数字。为什么需要
扫描仪
?我需要使用它与另一个3位数输入进行比较,因此我使用扫描仪将每个数字分开,并将其与三位数猜测输入进行对比,以便打印“提示”对于他们猜对的数字。我这样做的原因是因为该方法需要字符串类型的输出,所以我必须将该数字转换为字符串,以便从该方法返回值。但是关于这三个数字,您有一个很好的观点,只需除以并使用mod就简单多了。也许我可以将每个nu都转换为字符串将mber分别转换为字符串,然后将它们连接为一个。我这样做的原因是该方法需要字符串类型的输出,因此我必须将该数字转换为字符串,以便从该方法返回值。但是关于三位数字,您有一个很好的观点,只需除以并使用mod.Perha就简单多了ps我可以将每个数字分别转换成一个字符串,然后将它们连接成一个字符串。