首页 > 解决方案 > 从文本文件中提取分离的代码并将其存储到数组中以供进一步使用

问题描述

所以我应该从文本文件中读取 ID、用户名、密码(它们由“~!~”分隔)1~!~Jhon~!~12345 2~!~Mark~!~12345 3~!~Linda~!~abcde 4~!~Mary~!~qwerty 这里是文本文件的样子,即使我的输入是 (1 Jhon 12345),我的代码也总是提示 false。

public boolean LoginAsAdmin (int myID,String myUserName,String myPassword) 抛出 FileNotFoundException{

      File myFile = new File ("D:\\Java\\DATA.txt");
      Scanner Writer = new Scanner(myFile);
      int j = 0;
      while (Writer.hasNext()){
          Admin myAdmin1 = new Admin();
          String output = Writer.nextLine();
          StringTokenizer Data = new StringTokenizer(output,"~!~");
          if(
          myAdmin1.setID(Integer.parseInt((String) Data.nextToken()))&&
          myAdmin1.setUserName((String) Data.nextToken())&&
          myAdmin1.setPassword((String) Data.nextToken())){
                            myAdmin[j] = myAdmin1;


          }
           j++;
      }
     for (int i = 0; i < j; i++){

         if(myAdmin[i].getID() == myID && myAdmin[i].getUserName().equals(myUserName) && myAdmin[i].getPassword().equals(myPassword)){
             return true;
         }
     }
     return false;
    }

标签: javaarrays

解决方案


你不想nextToken加上一个声明,因为如果第一个是if它会提前失败- 另外我不确定你为什么要返回布尔值。testfalsesetters

首先,我建议您使用 BufferedReader 从文本文件中读取行 -有关示例,请参见https://www.mkyong.com/java/how-to-read-file-from-java-bufferedreader-example/ 。

然后对每一行做

String arr[] = inputStr.split("~!~");

for (int i = 0; i < arr.length; i = i + 3) {

    Admin myAdmin1 = new Admin ();
    String id = arr[i];
    myAdmin1.setId (id);
    String name = arr[i + 1];
    myAdmin1.setUsername (name);
    String passwd = arr[i + 2];
    myAdmin1.setPassword (passwd)
    myAdmin[i % 3] = myAdmin1;
    System.out.printf("%d %s %s%n", Integer.parseInt(id), name, passwd);

}

推荐阅读