2014-03-28 53 views
0

我使用GUI和二進制IO創建了一些東西,並且在使用InputStream時出現紅色線條。不知道爲什麼我在這裏發現紅色

當我使用in.readUTF,in.readDouble,in.readObject時,我創建了一個新的Object,Buffered和File InputStream,如下所示: 爲什麼我會變紅?

在此先感謝!

public RecordViewerPanel() throws IOException { 
    initComponents(); 
    try{ObjectInputStream in = new ObjectInputStream(
           new BufferedInputStream(
           new FileInputStream(filename))); 
    } catch (FileNotFoundException ex) { 
     Logger.getLogger(RecordViewerPanel.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 

private void refreshUI() { 
    SalesAgent sale = (customer.get(curIndex)); 
    firstTextField.setText(sale.getFirst()); 
    lastTextField.setText(sale.getLast()); 
    salesTextField.setText("$" + String.valueOf(sale.getSales())); 
    dateTextField.setText(String.valueOf(sale.getDate())); 
    recordPanel.repaint(); 
} 

ArrayList<SalesAgent> salesForce = new ArrayList<SalesAgent>(); 
String first = in.readUTF(); 
String last = in.redUTF(); 
double sales = in.readDouble(); 
Date date = (Date)(in.readObject()); 
+2

世界上是什麼*紅色內襯*? –

+0

對不起,哈哈,我在所有這些陳述中都得到了一條紅線,這是一個錯誤。找不到變量。 – Tonno22

+0

''''''看起來不在同一個範圍內,但我不確定那個懸掛的代碼塊在哪裏。 –

回答

2

inRecordViewerPanel()內聲明。它的範圍在try/catch區塊的{}之內。因此,在下面一行:

String first = in.readUTF(); 

in是不是由Java的這是錯誤消息Cannot find variable in的原因認可。

您可以通過傳遞in來解決此問題,或者聲明它,使其處於被調用或使用的範圍內。

還修復以下行:

String last = in.redUTF(); 

String last = in.readUTF(); 

再次,雖然,確保in在範圍內。

2

快看,但不是這樣的:

String last = in.redUTF(); 

應該是這樣的:

String last = in.readUTF(); 

0

您的輸入在try catch內部聲明,並且您在該範圍之外訪問它。

+0

這不提供問題的答案。要批評或要求作者澄清,在他們的帖子下留下評論 - 你總是可以評論你自己的帖子,一旦你有足夠的[聲譽](http://stackoverflow.com/help/whats-reputation),你會能夠[評論任何帖子](http://stackoverflow.com/help/privileges/comment)。 – bjb568

+0

@ bjb568,雖然這個答案不是非常冗長,但它確實回答了這個問題。我不確定你要發表的評論。 – shortstuffsushi

+0

@shortstuffsushi你喜歡壽司和簡短的答案?呵呵......無論如何,這是最好的評論,即使它在技術上可以回答這個問題。 – bjb568

1

你的問題實際上是雙重的,你已經在try/catch塊內聲明瞭你的'in'變量,這意味着它不能進一步訪問(你嘗試使用它)。實際上,它也在另一個方法的範圍內聲明,這意味着它在下面的塊中永遠不可見。您粘貼的代碼實際上看起來不正確,因爲您不能在Java中的其他函數內部使用函數聲明(匿名類除外)。另外,你的'last'變量有一個錯字,應該是in.readUTF();而不是redUTF()。

相關問題