2014-03-28 52 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()。

相关问题