我使用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());
答案 0 :(得分:2)
快看,但不是这样:
String last = in.redUTF();
原来是这样的:
String last = in.readUTF();
答案 1 :(得分:2)
in
在RecordViewerPanel()
内宣布。其范围在{}
块的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中声明,并且您在该范围之外访问它。