3 回答

TA貢獻(xiàn)1784條經(jīng)驗 獲得超8個贊
您在代碼中犯了幾個錯誤,并且還有更好的方法來實現(xiàn)代碼。但是對于您的輕描淡寫,我將更新您現(xiàn)有的代碼。
1) st 和 rt 應(yīng)初始化。因為當(dāng)?shù)谝淮?st 初始化時,rt 尚未初始化。
2) ||應(yīng)該是 &&.因為您需要循環(huán)直到所有文件都讀完為止。
3)應(yīng)該檢查st&rt是否為空。
請檢查以下代碼。
public class ReadingFiles
{
public static void main(String[] args) throws IOException
{
String inp = "first.txt";
String two = "second.txt";
BufferedReader br = new BufferedReader(new FileReader(inp));
BufferedReader br2 = new BufferedReader(new FileReader(two));
String st,rt="";
BufferedWriter bw = new BufferedWriter(new FileWriter("location"));
boolean isCompleted = false;
while( !isCompleted)
{
st=br.readLine() ;
bw.write(st==null?"":st);
bw.newLine();
rt=br2.readLine();
bw.write(rt==null?"":rt);
bw.newLine();
isCompleted = (st==null && rt == null) ? true : false ;
}
bw.close();
}
}

TA貢獻(xiàn)1804條經(jīng)驗 獲得超8個贊
你沒有關(guān)閉你的讀者,我更喜歡過度明確的關(guān)閉。然后,在無限循環(huán)中讀取各自文件中的每一行。在寫入輸出緩沖區(qū)之前,從每個文件單獨測試 ,并在用盡兩個輸入后再次終止循環(huán)。像這樣,try-with-resourcesnull
try (BufferedReader br = new BufferedReader(new FileReader(inp));
BufferedReader br2 = new BufferedReader(new FileReader(two));
BufferedWriter bw = new BufferedWriter(new FileWriter("location"))) {
while (true) {
String st = br.readLine();
if (st != null) {
bw.write(st);
bw.newLine();
}
String rt = br2.readLine();
if (rt != null) {
bw.write(rt);
bw.newLine();
}
if (st == null && rt == null) {
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}

TA貢獻(xiàn)1851條經(jīng)驗 獲得超5個贊
我會使用無限循環(huán)而不是在我的循環(huán)內(nèi)單獨管理循環(huán)退出條件。do
while
while
if
為什么?因為標(biāo)頭中的第二個條件語句可能不會執(zhí)行,因為它是 or (),并且當(dāng)?shù)谝粋€語句是時,編譯器會忽略條件語句的其余部分,因此永遠(yuǎn)不會啟動。這就是為什么編譯器強(qiáng)制您初始化的原因。while
||
true
rt
rt
添加回答
舉報