Java 为什么这会引发InputMismatchException?

Java 为什么这会引发InputMismatchException?,java,int,mismatch,Java,Int,Mismatch,text.txt是: public class Test { public static void main(String[] args) throws FileNotFoundException { Scanner input = new Scanner("text.txt"); int x = input.nextInt(); } } 此代码引发输入不匹配异常。为什么?那是因为“text.txt”不是一个数字。尝试:

text.txt是:

public class Test
{
    public static void main(String[] args) throws FileNotFoundException
    {
        Scanner input = new Scanner("text.txt");
        int x = input.nextInt();        
    }
}
此代码引发
输入不匹配
异常。为什么?

那是因为
“text.txt”
不是一个数字。尝试:

8 
8
6  
7
这是因为
“text.txt”
不是一个数字。尝试:

8 
8
6  
7
构造函数接受从中读取的字符串,而不是文件名

因此,
nextInt()
试图从传递给它的字符串中读取
int
,即
“text.txt”

相反,使用接受
文件
源的构造函数。

构造函数接受要读取的字符串,而不是文件名

因此,
nextInt()
试图从传递给它的字符串中读取
int
,即
“text.txt”


相反,请使用接受
文件
源代码的构造函数。

问题是由于过载。您正在调用新扫描仪(字符串),而不是新扫描仪(文件)。如果您尝试scanner.next(),您会看到它返回“text.txt”

问题是由于过载。您正在调用新扫描仪(字符串),而不是新扫描仪(文件)。如果您尝试scanner.next(),您会看到它返回“text.txt”

我想您指的是“file”。)不:)我真的是指数字。我应该说:
text.txt
是一个不包含数字的字符串。我想你指的是“文件”。)不:)我真的是指数字。我应该说:
text.txt
是一个不包含数字的字符串。