2015-11-09 51 views
-1

我越來越無效的賦值運算符

<無效賦值運算符

此代碼段中

int length=0; 
int i=0; 
for (Iterator<String> t_Number = keyset.iterator(); t_Number.hasNext()&& i<length;) 
{ 
    String key = (String)t_Number.next(); 
    row = sheet.createRow(rownum++); 
    Object[] objArr = (Object[])excel_data.get(key); 
    int cellnum = 0; 
    Object[] array; 
    length = (array = objArr).length; continue; 
    Object obj = array[i]; 
    Cell cell = row.createCell(cellnum++); 
    if ((obj instanceof Double)) { 
    cell.setCellValue(((Double)obj).doubleValue()); 
    } else { 
    cell.setCellValue((String)obj); 
    } 
    i++; 
} 

能有人請讓我知道解決這一問題?

回答

0

一個for環的結構是:

for (initialization; termination; increment) 

你增量步是i < length,這是不是該修改任何聲明。

假設你要檢查該條件,以及,你應該使用&&,而不是把它在增量步:

for(Iterator<String> t_Number = keyset.iterator(); 
    t_Number.hasNext() && i<length;/* no increment */) 

如果你這樣做,你一定要做的循環裏面的東西(或添加實際遞增步驟),其改變keyseti,使得終止條件最終將爲false

在回答您的更新,新的問題來自這行:

length = (array = objArr).length; continue; 

continue意味着跳過循環的那重複的休息;它只會增加,返回到塊的開始,並繼續運行。由於您無條件地致電continue,它將始終執行,並且在循環後無法到達。要麼刪除continue,要麼在其之前放置if(/* some condition */)

+0

謝謝它的作品! – user5473546

0

if聲明的3部分的最後部分,Java期望有一個聲明,但您擁有的僅僅是一個表達式i<length。我得到的編譯器錯誤是「不是一個聲明」。

如果您希望這是繼續迭代的另一個條件,則將其添加到條件(中)部分。

for (Iterator<String> t_Number = keyset.iterator(); t_Number.hasNext() && i<length;) 

(它假定的東西在你的代碼的實際體呼籲t_Number.next()和迭代前進。)

+0

我添加了代碼片段,你可以請我告訴我現在亞姆得到不可升級的代碼 – user5473546