2013-07-16 30 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())); 
    } 
另一種解決方案
相關問題