【问题标题】:reading text file and assigning strings from file to variables读取文本文件并将文件中的字符串分配给变量
【发布时间】:2013-07-15 08:31:24
【问题描述】:

我的代码有一些问题。我希望能够从文本文件中读取输入,并从每一行或空格之间获取字符串,并将它们分配给我将传递给对象的变量。

我的第一个问题是我的程序误读了我的一行并省略了变量的第一个字母,第二个问题是我不知道如何让我的程序在同一行读取两个字符串并将它们分配给不同的变量。

    System.out.println("Input the file name of the text file you want to open:(remember .txt)");
    keyboard.nextLine();
    String filename=keyboard.nextLine();

    FileReader freader=new FileReader(filename);
    BufferedReader inputFile=new BufferedReader(freader);

    courseName=inputFile.readLine();

    while (inputFile.read()!= -1) {
        fName=inputFile.readLine(); 
        lName=inputFile.readLine();
        officeNumber=inputFile.readLine();
    }
    System.out.println(fName);
    Instructor inst=new Instructor(fName,lName,officeNumber);
    System.out.println(inst);
    inputFile.close();

}

我不太擅长使用filereader,并尝试使用扫描仪键盘方法,但它导致我出现更多错误:(

输出: 从文件 (F) 或键盘 (K) 输入: F 输入要打开的文本文件的文件名:(记住.txt) 测试.txt 包子 un bun won won's office number 为空

文本文件: 教授 包子 赢了

【问题讨论】:

    标签: java bufferedreader filereader


    【解决方案1】:

    你必须用readLine()读一行然后你说你想用whitespace分割。

    所以你必须做这样的事情

        String line=null;
        List<Course> courses = new ArrayList<>();
            while ((line = inputFile.readLine())!= null) {
                String[] arrayLine= line.split("\\s+"); // here you are splitting with whitespace 
                courseName = arrayLine[0]
                lName=arrayLine[1];
                officeNumber=arrayLine[2];
                list.add(new Course(courseName,lName,officeNumber));   
              // you sure want do something with this create an object for example
    
            }
    
     // in some part br.close();
    

    这里有一个例子How to read a File

    【讨论】:

      【解决方案2】:

      当您在while 循环的条件下调用read() 时,BufferedReader 的“光标”会前进一个字符。你不想这样做来检查流是否可以被读取,你想使用ready()方法。

      【讨论】:

        【解决方案3】:

        这是使用 StringTokenizer 的另一种解决方案

            String line=null;
            List<Course> courses = new ArrayList<>();
            while ((line = inputFile.readLine())!= null) {
               StringTokenizer sToken = new StringTokenizer(input, " ");
               list.add(new Course(sToken.nextToken(),sToken.nextToken(),sToken.nextToken())); 
            }  
        

        【讨论】:

          猜你喜欢
          • 2013-08-07
          • 2016-03-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-09
          相关资源
          最近更新 更多