簡體   English   中英

嘗試使用java.util.Scanner讀取文本文件時將異常java.util.NoSuchElementException +將文件寫入不同的矩陣

[英]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讀取並將其寫入不同的矩陣,但執行此代碼后,兩個矩陣的內容相同。

在執行nextScanner對象引發了異常,因此在我看來, 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM