[英]Splitting strings from a file in java?
文件的字符串:
insert ignominious
insert elephant
insert judicious
insert bastion
insert fastidious
insert generous
insert hilarious
insert astute
insert degenerate
insert courageous
traverse
remove judicious
remove ignominious
我的代碼在一行上有兩個單詞時拆分字符串,但是當它進入“遍歷”時,由於它只是一個單詞,因此會出現OutOfBounds錯誤。 我不確定您是否需要檢查該行上是否只有一個單詞才能不拆分以及如何進行拆分。
BufferedReader in = new BufferedReader(new FileReader("file.txt"));
String str;
while ((str = in.readLine()) != null) {
String[] strArr = str.split(" ");
if(strArr[1]!=null)
System.out.println(strArr[0] + ", "+strArr[1]);
else
System.out.println(strArr[0]);
}
in.close();
正如@markspace所說,您應該只檢查數組的長度。
while ((str = in.readLine()) != null) {
String[] strArr = str.split(" ");
if(strArr.length > 1)
System.out.println(strArr[0] + ", "+strArr[1]);
else
System.out.println(strArr[0]);
}
如果僅打印這樣的名稱,則可以執行以下操作:
while ((str = in.readLine()) != null) {
String[] strArr = str.split(" ");
System.out.println(String.join(", ", strArr));
}
我認為這是解決更大問題的第一步。 很好的是,您開始通過實現僅讀取文件並打印出您解析的命令的代碼來解決此問題。 像這樣將較大的問題分解成較小的問題對於計算機程序員來說是一項重要技能。 但是,在這種情況下,您的簡化將忽略有關輸入的詳細信息:某些命令帶有參數,而有些則沒有。
一種解決方案是在嘗試使用strArr[1]
之前檢查存儲在strArr[0]
的命令。 此命令確定是否需要任何其他參數。 例如,如果strArr[0]
是"insert"
,那么您知道會有一個參數。 但是,如果它是"traverse"
,則不應有任何參數,並且您不應嘗試訪問strArr[1]
因為您知道它不存在。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.