公共字符串 - 无法解析

时间:2013-12-15 17:23:51

标签: java arrays string try-catch public

时出错
bw.write(dataString);

我该如何解决这个问题? dataString无法解析为变量。

public class test {
        public static void main(String[] args){
            ArrayList<String> data = new ArrayList<String>();

            try (BufferedReader br = new BufferedReader(new FileReader("src/test.txt"))) {
            String CurrLine;

            while((CurrLine = br.readLine()) != null) {
                data.add(CurrLine);
            }
            String[] dataArray = new String[data.size()];
            String dataString = Arrays.toString(dataArray);

            String[] client = dataString.split("<::>");
            Integer nameId = Arrays.binarySearch(client, "Test");
            Integer versId = nameId + 1;
            System.out.println(client[nameId] + "\n" + client[versId]);


        } catch(FileNotFoundException ex) {
        System.out.println("FNFE");
        } catch(IOException ex) {
            System.out.println("IOE");
        }
            try{
                File file = new File("src/test.txt");
                if (!file.exists()) {
                file.createNewFile();
                }
                FileWriter fw = new FileWriter(file);
                BufferedWriter bw = new BufferedWriter(fw);
        bw.write(dataString);
                bw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
    }

3 个答案:

答案 0 :(得分:1)

在try和catch块之外声明dataString ......就是这样。 ;)如果你在循环中声明它或在这种情况下你的try catch块,它的生命周期仅限于它。

像这样:

String dataString = null;

并在try-catch块内:

dataString = Arrays.toString(dataArray);

答案 1 :(得分:0)

dataString超出了try块的范围。

也许将dataString添加为类顶部的实例变量。

public class test {
        private String dataString = null;
        public static void main(String[] args){
            ArrayList<String> data = new ArrayList<String>();

            try (BufferedReader br = new BufferedReader(new FileReader("src/test.txt"))) {
            String CurrLine;

            while((CurrLine = br.readLine()) != null) {
                data.add(CurrLine);
            }
            String[] dataArray = new String[data.size()];
            dataString = Arrays.toString(dataArray);
         ...

答案 2 :(得分:0)

dataString变量的作用域仅限于第一个try-catch块。将其声明更改为以下内容,

public static void main(String[] args){
    ArrayList<String> data = new ArrayList<String>();
    String dataString = null;

    try (BufferedReader br = new BufferedReader(new FileReader("src/test.txt"))) {
        String CurrLine;

        while((CurrLine = br.readLine()) != null) {
            data.add(CurrLine);
        }
        String[] dataArray = new String[data.size()];
        dataString = Arrays.toString(dataArray);

        String[] client = dataString.split("<::>");
        Integer nameId = Arrays.binarySearch(client, "Test");
        Integer versId = nameId + 1;
        System.out.println(client[nameId] + "\n" + client[versId]);


    } catch(FileNotFoundException ex) {
        System.out.println("FNFE");
    } catch(IOException ex) {
        System.out.println("IOE");
    }
    try{
        File file = new File("src/test.txt");
        if (!file.exists()) {
            file.createNewFile();
        }
        FileWriter fw = new FileWriter(file);
        BufferedWriter bw = new BufferedWriter(fw);
        bw.write(dataString);
        bw.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}