Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java从文本文件中读取_Java_User Interface_Import - Fatal编程技术网

Java从文本文件中读取

Java从文本文件中读取,java,user-interface,import,Java,User Interface,Import,我正在尝试使用扫描仪将一些数据从文本文件加载到GUI。我的文本文件中有两个部分:俱乐部和会员。代码在俱乐部部分正常运行。例如,如果我的列表中有4个俱乐部,则所有俱乐部都将显示,但对于“会员”部分,无论列表中有多少会员,都只显示第一个会员。这是我的密码: public void load (String fileName) throws FileNotFoundException { FileInputStream fileIn = new FileInputStream("Clubs.

我正在尝试使用扫描仪将一些数据从文本文件加载到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 ++;

                }

        }

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

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

当您执行
scan.nextLine()
操作时,它会将扫描仪移动到当前读入的扫描仪后面的行。因此,如果继续执行
scan.next()
,扫描仪将从当前行的末尾开始(在本例中为
)并读取后面的内容

它说:

“将此扫描仪前进到当前行之后,返回被跳过的输入

您只需调用
line
上的
split()
substring()
,并提取所需信息即可

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文件 成员 成员1 成员2 成员3 俱乐部 俱乐部1 俱乐部2
club3

你能给我一个在文本文件中输入的例子吗?欢迎来到SO!我对你的帖子做了一些小的修改,使你的要求对社区更为明显。谢谢你的提示。但是如果我在Members部分使用while循环,程序也不会运行,我不知道为什么…这就是我得到的答案,你说的“不运行”是什么意思?请记住,
while(scan.hasNext())
在文件完成之前永远不会退出循环。考虑添加条件<代码>!line.equals(“Clubs”)到while循环。感谢您的帮助。我试着按照你的建议修改代码,但是没有用。我又是stack:)split和substring与这里提出的问题无关。@m0skit0我的回答是“Members”部分不起作用,因为他的代码将扫描仪移得太远了。为了避免这种情况,我建议使用split和substring。什么时候他们与这个问题无关?