【问题标题】:How to extract specific data from a large .txt file, and print it while run time?如何从大型 .txt 文件中提取特定数据,并在运行时打印?
【发布时间】:2019-10-17 02:52:33
【问题描述】:

所以在这个问题中,我们有一个文件,其中包含基于驾驶员的大量数据,其中包括驾照号码、驾照类别、名字、姓氏、地址、郊区、邮政编码、扣分和驾照状态。问题是只打印那些许可证状态为暂停的数据集。它必须印有执照号码、名字、姓氏、地址、郊区和扣分。

我尝试先打印整个文件,然后将它们分配到单独的内存文件中。然后使用 .equalsIgnoreCase("Suspended") 尝试仅打印暂停的数据集。

第一次尝试:

try {
      File inFile  = new File("Driver.txt");
      Scanner inputFile = new Scanner(inFile);

      String value;
      String[] values;

      while (inputFile.hasNext()) {
        value = inputFile.nextLine();
        values = value.split(",");
          System.out.println("Licence Number: " + "\t" + values[0]);
          System.out.println("First Name:" + "\t" + "\t"  +  values[2]);
          System.out.println("Last Name: " + "\t" + "\t"  +  values[3]);
          System.out.println("Suburb: " + "\t" + "\t" +  values[5]);
          System.out.println("Demerit Points: " + "\t" +  values[7]);
          System.out.println("Licence Status: " + "\t" +  values[8]);
          System.out.println();

          String licenceStatus = null;
          values[8] = licenceStatus;
          System.out.println(licenceStatus);

          System.out.println();

          /*if (licenceStatus.equalsIgnoreCase("Suspended")) {
            System.out.println("Listed below are the currently suspended drivers. ");
            System.out.println();
            System.out.println("Licence Number: " + "\t" + values[0] );
            System.out.println("First Name:" + "\t" + "\t" + values[2]);
            System.out.println("Last Name: " + "\t" + "\t" + values[3]);
            System.out.println("Address: " + "\t" + "\t" + values[4] );
            System.out.println("Suburb: " + "\t" + "\t" + values[5]);
            System.out.println("Demerit Points: " + "\t" + values[7]);
            System.out.println();
          } */

      }
    } catch (IOException e) {
      System.out.println("File not found!");
     }


Second Attempt:

try {
      File inFile  = new File("Driver.txt");
      Scanner inputFile = new Scanner(inFile);

      while (inputFile.hasNext()) {

          String licenceNumber = inputFile.next();
          System.out.println("Licence Number: " + licenceNumber + " ");

          String licenceClass = inputFile.next();
          System.out.println("Licence Class: " + licenceClass + " ");

          String firstName = inputFile.next();
          System.out.println("First Name:" + firstName + " ");

          String lastName = inputFile.next();
          System.out.println("Last Name: " + lastName + " ");

          String address = inputFile.next();
          System.out.println("Address: " + address + " ");

          String suburb = inputFile.next();
          System.out.println("Suburb: " + suburb + " ");

          int postCode = inputFile.nextInt();
          System.out.println("Postcode: " + postCode + " ");

          int demeritPoints = inputFile.nextInt();
          System.out.println("Demerit Points: " + demeritPoints + " ");

          String licenceStatus = inputFile.next();
          System.out.println("Licence Status: " + licenceStatus + " ");

          System.out.println();

         /* if (licenceStatus.equalsIgnoreCase("Suspended")) {
            System.out.println("Listed below are the currently suspended drivers. ");
            System.out.println();
            System.out.println("Licence Number: " + "\t" + `enter code here`licenceNumber );
            System.out.println("First Name:" + "\t" + "\t" + firstName);
            System.out.println("Last Name: " + "\t" + "\t" + lastName);
            System.out.println("Address: " + "\t" + "\t" + address );
            System.out.println("Suburb: " + "\t" + "\t" + suburb);
            System.out.println("Demerit Points: " + "\t" + demeritPoints);
            System.out.println();
          } */ 

      }
    } catch (IOException e) {
      System.out.println("File not found!");
      }

它应该像这样打印:

许可证号:######## 名: ######## 姓: ######## 地址:######## 市郊:####### 扣分:##

【问题讨论】:

  • 您已经向我们展示了您尝试了什么以及输出应该是什么样的,但您并没有真正解释问题所在。而且,用于打印“暂停”驱动程序的代码已被完全注释掉,这当然无济于事......
  • 是的,我明白,暂停的代码已被注释掉,因为我试图弄清楚如何按顺序打印它们。但是我已经找到了解决方案并且它有效!谢谢!

标签: java eclipse


【解决方案1】:

应该是这样的

if (values[8].equals("Suspended")) {
      System.out.println("Licence Number: " + "\t" + values[0]);
      System.out.println("First Name:" + "\t" + "\t"  +  values[2]);
      System.out.println("Last Name: " + "\t" + "\t"  +  values[3]);
      System.out.println("Suburb: " + "\t" + "\t" +  values[5]);
      System.out.println("Demerit Points: " + "\t" +  values[7]);
      System.out.println("Licence Status: " + "\t" +  values[8]);
      System.out.println();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多