2013-07-16 28 views
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(); 

} 

我不是在使用的FileReader非常好,已经尝试使用扫描仪键盘方法,但它使我更加错误:(

输出:从文件 输入(F)或键盘(K): ˚F 输入你想要打开的文本文件的文件名:(记得.TXT) 的test.txt 未包子 未包子亿韩元的办公室号码是空

文本文件: PR ofessor messor 馍馍 亿韩元

回答

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

0

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

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())); 
    } 
另一种解决方案
相关问题