3

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

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

    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();

}

我不太擅长使用文件阅读器并尝试使用扫描仪键盘方法,但这导致我出现更多错误:(

输出:从文件(F)或键盘(K)输入:F 输入要打开的文本文件的文件名:(记住.txt) test.txt un bun un bun won won's office number is null

文本文件:教授教授 bun bun won won

4

3 回答 3

3

你必须读一行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();

这里有一个例子如何读取文件

于 2013-07-16T23:44:57.643 回答
0

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

于 2013-07-16T23:44:43.287 回答
0

这是使用 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())); 
    }  
于 2017-08-24T10:45:21.050 回答