2013-10-09 33 views
1

在Java IM新手,我有while條件和它的工作不錯,但我需要利用與循環:此而條件循環變化循環的條件,同時與有關Java

String command = ""; 
while ((command = br.readLine())!=null && !command.isEmpty()) { 
    int b=0; 
    thisObj.perintah(b,command); 
} 

我有嘗試寫對,我覺得像這樣的類似,但它不能正常工作

for (int b=0;b<command;b++) 
    { 
    String command = br.readLine(); 
    thisObj.perintah(b,command); 
    } 

有沒有人知道我失蹤

+2

你認爲一個整數和字符串之間的不等式比較應該做什麼? – Phoshi

+0

您正在將String命令與int b進行比較。這不是一個好主意。 – luanjot

+1

您的第一個片段中的「b」有什麼意義? – arshajii

回答

0

目前還不清楚是什麼值應b服食。無論哪種方式,你必須將字符串轉換爲整數。

String command = ""; 
for(int b = 0; (command = br.readLine())!=null && !command.isEmpty(); ++b) { 
    thisObj.perintah(b,command); 
    String command = br.readLine(); 
} 
+1

我相信你需要增加'b'才能編譯? – christopher

+0

是的,我需要增加b來使用我的方法 –

+0

@poundPound但是'b'和'command'之間的關係是什麼?這是你想要的嗎 ? – zakinster

1

while循環表現爲一個循環:

int b = 0; 
for (String command = br.readLine(); command !=null && !command.isEmpty(); command = br.readLine()) { 
    thisObj.perintah(b++, command); 
} 

使用變量名command使得for線很長,所以這裏的用較短的變量名稱相同的代碼,因此它的更清楚發生了什麼事情:

int b = 0; 
for (String s = br.readLine(); s !=null && !s.isEmpty(); s = br.readLine()) { 
    thisObj.perintah(b++, s); 
} 
+0

這是一個'for each'循環..它肯定更合適,但也許你可以包含一個經典的'for'循環呢?覆蓋所有的基地! – christopher

+0

@Chris這不是foreach:這裏沒有可迭代的對象,也沒有foreach語法的':'運算符。這是一個標準的'for'循環。 – Bohemian

+0

梅林的鬍子。就這樣。我收回我的陳述,並獎勵你一個可愛的解決方案+1。 – christopher

0

Java無法比較intString沒有一些幫助。您需要將命令轉換爲數字。嘗試Integer.parseInt()

但是你不能在for循環的條件下做到這一點。試試這個:

int b = 0; 
String command = ""; 
while ((command = br.readLine())!=null && !command.isEmpty()) { 
    int commandAsInt = Integer.parseInt(command); 
    if(b >= commandAsInt) break; // exit the loop 

    thisObj.perintah(b,command); 
    b++; 
} 
+0

爲什麼要檢查該行是否爲空並且它不是空的?一個條件會做。 – Troubleshoot

+0

@故障排除:儘可能保留原始代碼。 –

+0

@Troubleshoot請參閱http:// stackoverflow。com/questions/19272122/stop-looping-if-method-read-next-line-empty – zakinster