我的代码存在一些问题。我希望能够从文本文件中读取输入并从每行或空格之间获取字符串,并将它们分配给我将传递给对象的变量。
我的第一个问题是我的程序误读了我的一行并省略了变量的第一个字母,第二个问题是我不知道如何让我的程序在同一行读取两个字符串并将它们分配给不同的变量。
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) 的test.txt 联合国 un bun won won的办公室号码为空
文字文件: 教授梅索尔 包子 赢了赢了
答案 0 :(得分: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();
这里有一个示例How to read a File
答案 1 :(得分:0)
当您在read()
循环的条件下调用while
时,BufferedReader的“游标”会前进一个字符。您不想这样做以检查是否可以读取流,您想要使用ready()
方法。
答案 2 :(得分: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()));
}