不知道为什么我在这里变红了

时间:2014-03-28 00:18:21

标签: java user-interface inputstream

我使用GUI和二进制IO创建了一些东西,并且在使用InputStream时我在这里变红了。

我已经创建了一个新的Object,Buffered和File InputStream。 当我使用in.readUTF,in.readDouble,in.readObject时为什么我会变红?

提前致谢!

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());

4 个答案:

答案 0 :(得分:2)

快看,但不是这样:

String last = in.redUTF();

原来是这样的:

String last = in.readUTF();

答案 1 :(得分: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 :(得分:1)

你的问题实际上是双重的,你已经在try / catch块中声明了你的'in'变量,这意味着它无法进一步向下(你试图利用它)。实际上,它也在另一个方法的范围内声明,这意味着它永远不会在下面的那个块中可见。您粘贴的代码实际上看起来并不有效,因为您不能在Java中的其他函数内部使用函数声明(匿名类除外)。另外,你的'last'变量有一个拼写错误,应该是in.readUTF();而不是redUTF()。

答案 3 :(得分:0)

您的输入在try catch中声明,并且您在该范围之外访问它。