[英]java.util.NoSuchElementException at java.util.Scanner
[英]Exception java.util.NoSuchElementException when trying to read text file using java.util.Scanner + write file into different matrix
我是java的新手,我寫這段代碼來總結兩個矩陣。 通過從input.in文件讀取來填充兩個矩陣。 我對此代碼有兩個問題:1.在執行過程中遇到此錯誤:我不知道是什么原因導致此錯誤。
Exception in thread "main" java.util.NoSuchElementException at java.util.Scanner.throwFor(Scanner.java:907) at java.util.Scanner.next(Scanner.java:1530) at java.util.Scanner.nextInt(Scanner.java:2160) at java.util.Scanner.nextInt(Scanner.java:2119) at ssmain(s.java:36) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
我的代碼是:
package example;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class aaaa {
public static void main (String [] args) throws FileNotFoundException{
int [][] matrix1 = new int[4][4];
int [][] matrix2 = new int[4][4];
int [][] matrix3 = new int[4][4];
String file = "c:\\input.txt";
Scanner text = new Scanner(new File(file));
while (text.next()!=null){
for (int i=0;i<4;i++)
for (int j=0;j<4;j++)
matrix1[i][j]= text.nextInt();
}
while (text.next()!=null){
for (int i=0;i<4;i++)
for (int j=0;j<4;j++)
matrix2[i][j]= text.nextInt();
}
for (int i=0;i<4;i++)
for (int j=0;j<4;j++)
System.out.println(matrix3[i][j] + matrix3[i][j]);}}
此代碼有什么問題?
替換Pablo FranciscoPérez建議后的新代碼:
public class aaaa {
public static void main (String [] args) throws FileNotFoundException{
int [][] matrix1 = new int[4][4];
int [][] matrix2 = new int[4][4];
int [][] matrix3 = new int[4][4];
String file = "c:\\input.txt";
Scanner text = new Scanner(new File(file));
for (int i=0;i<4;i++)
{
if(!text.hasNextInt()) break;
for (int j=0;j<4;j++)
{
if(!text.hasNextInt()) break;
matrix1[i][j]= text.nextInt();
}
}
for (int i=0;i<4;i++)
{
if(!text.hasNextInt()) break;
for (int j=0;j<4;j++)
{
if(!text.hasNextInt()) break;
matrix2[i][j]= text.nextInt();
}
}
for (int i=0;i<4;i++)
for (int j=0;j<4;j++)
System.out.println(matrix3[i][j] + matrix3[i][j]);}}
2.雖然我試圖從input.in讀取並將其寫入不同的矩陣,但執行此代碼后,兩個矩陣的內容相同。
在執行next
, Scanner
對象引發了異常,因此在我看來, text
已經用盡了其輸入源。
您應該控制在text
擁有更多的元素,然后再嘗試嘗試輸入更多的整數,而不是像在外部循環那樣,而是在最深的層次上。
現在,如果可以在開始循環之前獲取元素,則正在加載4x4 = 16個元素的束。
嘗試:
for (int i=0;i<4;i++)
{
if(!text.hasNextInt()) break;
for (int j=0;j<4;j++)
{
if(!text.hasNextInt()) break;
matrix1[i][j]= text.nextInt();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.