我正在嘗試編寫按順序排列的Java任務;Java嘗試讀取文本文件時遇到運行時錯誤
- 閱讀預先編寫的文本文件
- 打開每一行的每一行轉換成字符串
- 打開每一行的每一部分到它自己的獨立字符串/ INT /雙
- 分配這些變量中的對象(這是一個對象的陣列的一部分),我也創建此分配
- 打印使用類中的一個對象的每個變量的一部分的一類方法
但是,我反覆遇到運行時問題,我收到此錯誤消息;
在java.util.Scanner.next(Scanner.java:1371)在線程 「主」 java.util.NoSuchElementException 在java.util.Scanner.throwFor(Scanner.java:862) 異常 在Lab2.main(Lab2.java:27)
這使我相信我可能讀錯文本文件。但是,無論我做什麼,我都無法使其正確讀取。它應該讀取一個名字,一個姓氏,一個地址(它連接成一個字符串),一個城市,一個州,一個郵政編碼(作爲一個整數),一個電話號碼(作爲一個字符串)和一美元的金額(作爲一個雙)。
我認爲這個問題可能來自城市名稱,因爲它們中的一些之間有空間。我認爲我已經通過設置掃描器的分隔符來解決這個問題,該掃描器將每個單獨的字符串讀取到一個標籤(這是每個其他元素被分隔的東西),但是這沒有工作(並且因此試圖將狀態名稱變成一個整數通過Integer.parseInt()靜態方法),或者不是問題。正如我所說,我沒有想法,並會非常感謝任何能夠幫助我的人!
我會列出下面的代碼。首先是主文件;
public class Lab2
{
public static void main(String[] args) throws IOException
{ String FirstName, LastName, Address1, Address2, Address3, AddressFull, City, State, Phone, ZipString, DonString, line = "blank";
int Zip;
double Donation;
Scanner fileScan = new Scanner(new File("Lab2.txt")), lineScan = new Scanner(line);
lineScan.useDelimiter("\t");
PersonStats[] Donators = new PersonStats[25];
for (int i = 0; i < Donators.length; i++)
{ line = fileScan.nextLine();
FirstName = lineScan.next();
LastName = lineScan.next();
Address1 = lineScan.next();
Address2 = lineScan.next();
Address3 = lineScan.next();
AddressFull = Address1 + " " + Address2 + " " + Address3;
City = lineScan.next();
State = lineScan.next();
ZipString = lineScan.next();
Zip = Integer.parseInt(ZipString);
Phone = lineScan.next();
DonString = lineScan.next();
Donation = Double.parseDouble(DonString);
Donators[i] = new PersonStats(FirstName, LastName, AddressFull, City, State, Zip, Phone, Donation);
Donators[i].PrintOut();
}
}
}
接下來,我爲這個任務寫下了類文件;
public class PersonStats
{ private String FirstName, LastName, Address, City, State, Phone;
private int Zip;
private double Donation;
public PersonStats(String first, String last, String area, String town, String feifdom, int postcode, String telegraph, double given)
{ FirstName = first;
LastName = last;
Address = area;
City = town;
State = feifdom;
Zip = postcode;
Phone = telegraph;
Donation = given;
}
public void PrintOut()
{ System.out.println(FirstName + " " + LastName);
System.out.println(Address);
System.out.println(City + ", " + State + " " + Zip + "\n");
System.out.println(Phone + " " + Donation);
}
}
然後終於文本文件的程序應該從被讀取(可能是有點難以閱讀,只記得除了在城市名稱的那些每個空間實際上是一個標籤);
Rick James 8276 Carlos Ave Las Vegas NV 87126 5553451567 23.95
John Gibson 9127 Oak Dr Corvallis OR 97330 5552812313 156.78
Ron Wills 1155 Ivy Pl Atlantic Ga 37339 5552123145 189.56
Rita Jones 1259 Chase Ave Las Vegas NV 87126 5554445671 2145.60
Jason Knight 7154 Pine Dr Gresjam OR 97380 5558124545 3157.44
Clara Swanson 1944 Main Pl Springfield OR 97339 5552123144 212.99
Robert Peck 1866 First Ave Las Vegas NV 87126 5553455425 250.00
Dora Garcia 2179 Fir Dr Corvallis OR 97330 5552812919 350.00
Peter Keck 1465 Circle Pl Gold Beach OR 97339 5552123256 2150.00
Stuart Smith 2387 Sweek Ave Las Vegas NV 87126 5553455489 650.99
Tyler Wild 1313 Spooky Ln Corvallis OR 97330 5552813213 587.45
Laretta Peters 2224 Chase Pl Monmouth OR 97361 5552124465 123.45
Kristi Emry 3465 Cerrito Ave Las Vegas NV 87126 5553455567 3212.65
Kelli Gard 1894 Elm Dr Corvallis OR 97330 5552816678 51.00
Jacob Andrews 8159 Rose Ct Mill City OR 97322 5552127879 64.00
Ryan Perkins 7546 Prince Ave Las Vegas NV 87126 5553451989 13.00
Joshua Gilbert 9278 Monroe Dr Corvallis OR 97330 5552832656 95.00
Miles Crain 4578 Chester Dr Corvallis OR 97331 5552345678 1544.00
Butch Cassidy 5498 Sutton Pl Gresham OR 97380 5416565797 1798.56
Perry Winkle 8185 Shaver Ave Las Vegas NV 87126 5553812346 195.66
Loni Day 4598 Holmen Dr Corvallis OR 97330 5555289741 1878.50
Nikita Benson 1787 Grant Pl Portland OR 97321 5553569898 1500.00
Rusty Krouger 8829 Simeon Ave Las Vegas NV 87126 5555677847 2100.00
Wally Wallace 2898 Wilson Blvd Jackson Center OH 23466 5552222222 2222.22
Joe Jones 1212 Water St Millersburg OR 97366 5555555555 55.55
再次,如果有任何人可以幫助我,這個建議可能會挽救生命!或者至少本實驗的得分:S
檢查http://stackoverflow.com/questions/13102045/skipping-nextline-after-using-next-nextint-or-other-nextfoo-methods。順便說一句,你爲什麼不使用'FileReader' +'BufferedReader'? – TheLostMind
有許多檢查_before_做相應的'next〜':'hasNextLine','hasNext'。 –
您的示例文本文件實際上並未通過製表符分隔。我在5人詳細記錄文本文件 –