![](/img/trans.png)
[英]Java Scanner Error: Exception in thread “main” java.util.NoSuchElementException
[英]Java Exception in thread “main” java.util.NoSuchElementException runtime error
我一直在做一個簡單的Java程序作為學校的家庭作業。 當我添加了一種從.txt文件中檢索2D數組的方法時,就會出現此錯誤。 該程序在編譯時不顯示任何錯誤。 我是一名新程序員,因此請徹底檢查所有添加或更改的內容。 除了手頭的問題,請隨時給我進一步的提示和建議。
提前致謝
這是代碼:
import java.util.*;
import java.io.*;
public class simpleAI2
{
public static void main (String [] args)
{
int count = 0;
String[][] array = new String [20][4];
simpleAI2.getArrayData(array);
String leaveQ;
int rep = 1;
do
{
int countTwo = 0;
boolean flag = false;
Scanner scanName = new Scanner (System.in);
Scanner scanSport = new Scanner (System.in);
Scanner leave = new Scanner (System.in);
System.out.println("My name is A.I.S.C.M.B.T. What is your name?");
array[count][1] = scanName.nextLine ();
System.out.println("Hi "+array[count][1]+"! What's your favourite sport?");
array[count][2] = scanSport.nextLine ();
String sport = array[count][2];
for(int x = 1;x<rep;x++)
{
if(!array[countTwo][2].equals(null) && array[countTwo][2].equals(array[count][2]))
{
flag = true;
x = 28;
}
else
{
flag = false;
}
countTwo ++;
}
countTwo --;
if(flag == true)
{
System.out.println("I know "+array[countTwo][2]+". It is "+array[countTwo][3]+". My friend "+array[countTwo][1]+" knows it");
}
if(flag == false)
{
System.out.println("I don't know "+array[count][2]+". I only know robot boxing. Robots hit each other until one malfunctions. What is this alien sport you speak of?");
array[count][3] = scanSport.nextLine ();
}
System.out.println("Go again? Type no to leave me :(");
leaveQ = leave.nextLine ();
rep ++;
count ++;
if(leaveQ.equals("no"));
{
simpleAI2.Save(array);
}
}while (!leaveQ.equals("no"));
}
public static void Save(String [][] array){
try {
PrintWriter writer = new PrintWriter(new File("arrayData.txt"));
for(int x=0; x<array.length; x++){
for(int y=0; y<array[x].length; y++){
writer.write(String.valueOf(array[x][y]));
}
writer.println();
}
writer.flush();
writer.close();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
}
public static void getArrayData(String [][] array){
try {
Scanner scan2 = new Scanner(new File("arrayData.txt"));
for(int i=0; i<array.length; i++){
for(int j=0; j<array[i].length; j++)
{
array[i][j]=scan2.next();
}
}
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
}
}
如果在沒有任何要讀取的內容時調用Scanner
函數next() ,它將拋出NoSuchElementException
。
將您的代碼更改為以下內容:
public static void getArrayData(String [][] array)
{
try
{
Scanner scan2 = new Scanner(new File("arrayData.txt"));
for(int i=0; i<array.length; i++)
{
for(int j=0; j<array[i].length; j++)
{
if ( ! scan2.hasNext() ) //if there's nothing left to read
return; //exit the function
array[i][j]=scan2.next();
}
}
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.