Java:我的文件输入/输出有问题(br无法解析)

时间:2014-03-26 20:04:42

标签: java bufferedreader bufferedwriter

我对Java比较陌生,所以我只想尝试简单的IO,以及异常处理。我的程序非常基本 - 我只想从文件中读取一个数字,然后将其从Celsius转换为Fahreinheit,并将其输出到另一个文件中。我得到的错误是:“br / bw无法解析”,“br / bw无法解析为变量”。看起来像是一个范围问题,但我不确定。我这样说是因为它们都是在我创建BufferedReader / BufferedWriter对象/变量之后发生的。

谢谢你的期待。

import java.io.*;
import java.util.*;

public class InputOutputTest {

    public static void main (String [] args){

        String dataIn = "input.txt";
        String dataOut = "output.txt";

        try{
            BufferedReader br = new BufferedReader( new FileReader( dataIn ) );
        }

        catch(FileNotFoundException e){
            System.out.println("Cannot open " + dataIn);

        }

        try{
            BufferedWriter bw = new BufferedWriter(new FileWriter(dataOut));
        }

        catch(IOException e){
            System.out.println("Cannot open " + dataOut);
        }

        Scanner fileIn = new Scanner( br );

        try{
            while(fileIn.hasNext()){

                int cTemp = fileIn.nextInt();
                int fTemp = cTemp * (9/5) + 32;

                bw.write("The temperature " + cTemp + " in fahrenheit is " + fTemp);
            }
        }

        catch(IOException e){
            System.out.println("Error, problem writing to file.");
        }

        try{
            br.close();
            bw.close();
        }
        catch(IOException e){System.out.println("Error: Problem closing input or output file.");}
    }
}

2 个答案:

答案 0 :(得分:2)

由于您已在br块中声明了try变量,因此其范围仅限于该块。

要增加br的范围,请在try阻止之前声明。

BufferedReader br = null;
try{
    br = new BufferedReader( new FileReader( dataIn ) );
}

您必须将其初始化为null,以便您可以确保它始终初始化为某些内容(甚至是null),然后才会引用它第一次。

未来的引用需要在使用之前检查它是否为null

答案 1 :(得分:1)

这是因为您在try块中声明了BufferedReader,它在此块之外是不可见的。在Java中,范围分辨率(通过括起花括号确定)决定了对象的可见性。