【问题标题】:reading and printing specific lines based on gender in string from text file (java)从文本文件(java)中读取和打印基于字符串中的性别的特定行
【发布时间】:2018-09-19 01:21:49
【问题描述】:

我要做的是在文本文件中挑选出某些行,并根据文本文件中人的性别分别打印它们。依次是 ID、姓名、性别和年龄。

文本文件中的示例行(男性):1 John m 18
文本文件中的示例行(女性):3 Susan f 21

这是我目前的代码。

import java.util.*;
import java.io.*;



class person {
String id;
String name;
String gender;
int age;
  }

public class arrayList3 {

 public static void main(String[] args) throws FileNotFoundException {

    Scanner input = new Scanner(new File("student.txt"));
    ArrayList<person> studentList = new ArrayList<>(); //all types

    while(input.hasNextLine()) {
        person p = new person();
        p.id = input.next();
        p.name = input.next();
        p.gender = input.next();
        p.age = input.nextInt();
        studentList.add(p);
      }
   //prints list of female students
   System.out.println("== Female Student List ==");
    for (int k = 0; k < studentList.size(); k++){
        if(studentList.contains("f")){

            System.out.println(studentList.get(k).id +" "+ studentList.get(k).name +" "+ studentList.get(k).gender +" "+ studentList.get(k).age);
        }

    } 
   System.out.println();

   //prints list of male students
   System.out.println("== Male Student List ==");
    for (int k = 0; k < studentList.size(); k++){

        System.out.println(studentList.get(k).id +" "+ studentList.get(k).name +" "+ studentList.get(k).gender +" "+ studentList.get(k).age);

    } 
    input.close();
}


}

我尝试对女学生列表使用 if 语句,但这并没有打印任何内容。对于男学生列表,它只打印整个文本文件,而不是只打印男学生。

【问题讨论】:

  • if (studentList.get(k).gender.equals("F"))...
  • 谢谢!我知道这很简单。
  • 唉!要是他们那么简单就好了……(叹气)

标签: java file


【解决方案1】:

肖恩,

你的 for 循环包含这一行:

if(studentList.contains("f")){

但是 studentList 是这样定义的:

ArrayList<person> studentList = new ArrayList<>();

你上面的 if 语句不应该评估为真,因为“f”是一个字符串,它与列表内容的类型不同。

假设“f”的 person.gender 是您要过滤的内容,对您的程序进行最简单的更改以使其正常工作是将上述 if 语句替换为:

if("f".equals(studentList.get(k).gender)){

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 2011-01-09
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多