我正在用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());
in
在RecordViewerPanel()
中声明。其范围在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内声明,并且您在该范围外访问它。