Java从文本文件中读取

时间:2013-04-25 18:34:34

标签: java user-interface import

我正在尝试使用扫描仪从文本文件中将一些数据加载到GUI。我的文本文件中有两个部分:分会和会员。该俱乐部部分的代码运行正常。例如,如果我的列表中有4个俱乐部,则会显示所有这些俱乐部,但是对于“成员”部分,无论列表中有多少成员,都只会显示第一个成员。这是我的代码:

public void load (String fileName) throws FileNotFoundException {
     FileInputStream fileIn = new FileInputStream("Clubs.txt");
     Scanner scan = new Scanner(fileIn);

     while (scan.hasNextLine()){
            String line = scan.nextLine();
            if(line.equals("Members")){
                String firstName = scan.next();
                String lastName = scan.next();
                Pupil p1 = new Pupil( firstName, lastName);
                pupils[nbrPupils] = p1;
                nbrPupils ++;

               }   
             else if(line.equals("Clubs")){ 
                 while (scan.hasNext()){
                 String club = scan.nextLine();
                 Club aNewClub = new Club(club);
                 clubs[nbrClubs] = aNewClub;
                 nbrClubs ++;

                }

        }

4 个答案:

答案 0 :(得分:1)

提示:您在while (scan.hasNext())部分中正在Clubs,但您未在Members部分执行此操作。

答案 1 :(得分:1)

while循环转换为if条件,因为您只想检查是否有下一行

else if (line.equals("Clubs")) {
       if (scan.hasNext()) {/////here if you use while loop , it will loop until the file is finish 
         String club = scan.nextLine();
        }

答案 2 :(得分:0)

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class ReadFile {

    /**
     * @param args
     * @throws Exception 
     */
    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        new ReadFile().load("");
    }

    public void load (String fileName) throws FileNotFoundException {
         FileInputStream fileIn = new FileInputStream("C:\\Clubs.txt");
         Scanner scan = new Scanner(fileIn);
         boolean membersfound =false;
         while (scan.hasNextLine()){
                String line = scan.nextLine();

                if(line.equals("Members") || membersfound){

                    String firstName = scan.next();
                    String lastName = scan.next();
                   System.out.println("Member   "+firstName +":"+ lastName);

                   }   
                 else if(line.equals("Clubs") ){ 
                     while (scan.hasNext()){
                     String club = scan.nextLine();
                     if( club.equals("Members")){
                         membersfound = true;
                         break;
                     }
                     System.out.println("Clubname :" + club
                             );                

                    }

            }
}
    }
}

我本来可以修改整个程序。但我想告诉你你的错误 示例clubs.txt文件 会员 member1中 member2 member3 俱乐部 club1 club2 club3

答案 3 :(得分:-1)

执行scan.nextLine()时,它会将扫描仪移动到您当前读取的扫描仪之后的行。因此,如果您继续scan.next(),扫描仪将从当前行的末尾开始(在这种情况line)并读取它之后的内容。

See here它说:

“使此扫描程序超过当前行,返回跳过的输入

您可以在split()上致电substring()line并提取您需要的信息。