不知道为什么我在这里被红线



我正在用GUI和二进制IO创建一些东西,当使用InputStream时,我在这里得到红线。

我已经创建了一个新的对象,缓冲和文件输入流。当我用in时。readUTF,。readDouble,。为什么我得到红线?

提前感谢!

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

inRecordViewerPanel()中声明。其范围在try/catch块的{}内。因此在下一行中:

String first = in.readUTF();

in不能被Java识别,这就是错误信息Cannot find variable in的原因。

你可以通过传递in来解决这个问题,或者通过声明它在它被调用或使用的范围内。

还修复以下行:

String last = in.redUTF();

String last = in.readUTF();

同样,确保in在范围内

快速查看,但这不是:

String last = in.redUTF();

应该是这样的:

String last = in.readUTF();

?

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

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

相关内容

  • 没有找到相关文章

最新更新