2011-05-06 55 views
2

我正在尝试读取文本文件,然后使用Java中的nextInt()函数在循环中打印出整数。文本文件我的形式是:Scanner,nextInt和InputMismatchException

a 2000 2 
b 3000 1 
c 4000 5 
d 5000 6 

这里是我的代码:

public static void main(String[] args) throws FileNotFoundException { 

    String fileSpecified = args[0] + ".txt"; 

    FileReader fr = new FileReader(fileSpecified); 
    BufferedReader br = new BufferedReader (fr); 
    Scanner in = new Scanner (br); 

    while (in.hasNextLine()) { 
    System.out.println ("next int = " + in.nextInt()); 
    } 
} 

的错误,我总是得到的是:

Exception in thread "main" java.util.InputMismatchException 
      at java.util.Scanner.throwFor(Unknown Source) 
      at java.util.Scanner.next(Unknown Source) 
      at java.util.Scanner.nextInt(Unknown Source) 
      at java.util.Scanner.nextInt(Unknown Source) 

我得到我用这个错误,每次nextInt()在任何程序中。

回答

1

你可能想是这样的,而不是:

while (in.hasNext()) { 
    System.out.println("letter = " + in.next()); 
    System.out.println("integer1 = " + in.nextInt()); 
    System.out.println("integer2 = " + in.nextInt()); 
} 
+0

感谢,现在它工作。 – Triple777er 2011-05-06 11:36:27

5

我认为它会找到字符,例如“a”,“b”,“c”,它是一个字符串,并且没有把它作为一个int。您可以通过以下方式进行调试:

System.out.println ("next value= " + in.next()); 
//System.out.println ("next int = " + in.nextInt()); 

您也可以使用API​​保护来防止这种情况发生,例如,

if(in.hasNextInt()) { 
     System.out.println ("next int = " + in.nextInt()); 
} 
+0

三江源非常 – Triple777er 2011-05-06 11:35:41

1

hasNextLine并不意味着下一个值是一个int。您发布的输入文件包含例如“a”,这不是一个整数。

+0

三江源,现在我更好地理解它 – Triple777er 2011-05-06 11:36:11