gpt4 book ai didi

java - 2.0版本(现在添加查询)

转载 作者:行者123 更新时间:2023-12-01 14:36:54 25 4
gpt4 key购买 nike

我正在编写一个程序,它将读取文件并提取每个学生的数据。我使用 while 循环和 input.next() 成功完成了此操作。但是,我需要将变量传递到一个集合中来记录每个学生的数据,因此对于每个循环,我想再次将 4 个变量(id、first、last、year)添加到集合中。我应该注意,该集合必须位于不同的类(class)中,并且我必须能够搜索该集合以找到例如今年毕业的所有学生。如果有人能指出我关于将变量存储在集合中的正确方向,该集合位于不同的类中,对于每个循环。我知道这是一个基本问题,但我对 Java 很陌生,所以我感谢大家的帮助!

第一个类是

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

public class ProcessRecords {

public static void AskUser()
throws Exception {
Scanner preference = new Scanner(System.in);
//Creating a new scanner will allow us to gather user input

boolean flag=true;
//I will use this for my while loop

while (flag) {
System.out.println("What type of Search would you like to run?\n 1)Search for all students\n 2) Search for students graduating in a specific year\n 3)Search for students whose last name begins with a certain string\n");
int searchType=preference.nextInt();
//This variable will store what type of query the user would like to run

switch(searchType) {
case 1:
System.out.println("Gathering Records for all students\n");
//Call Query Method in the Query Class to return all students in the colletion
case 2
System.out.println("What graduation year would you like to search for? \n");
String yearsearch=preference.next();
//Call Query Method to return students who are graduating in the specified year
//Pass the "yearsearch" variable to the Query class to run the search
case 3:
System.out.println("What string would you like to search for? \n");
String lstsearch=preference.next();
//Call Query Method in the Query Class to return students who have the string in their last name
//I need to pass the "lstsearch" variable to the Query class to search through last names

}
}
}

public static void main(String[] args)
throws Exception
{
Scanner input = new Scanner(new File("students.txt"));
//This will import the file
input.nextLine();
//This will skip the headers in the file
System.out.println("Processing file now...");
//Let the user know that the file is being processed
int id;
String last;
String first;
int year;
int i=1;
// Declare variables that we will extract from the file

//Now we will being processing the file with a while loop

List<StudentRecord> studentRecords = new ArrayList<StudentRecord>();
while(input.hasNext())
{
id=input.nextInt();
last=input.next();
first=input.next();
year=input.nextInt();
StudentRecord record = new StudentRecord(id, last, first, year);
studentRecords.add(record);
System.out.println(id + " " + last + " " + first + " " + year + "\n");

}
System.out.println(" You have successfully read and printed from the file!");
for (StudentRecord s : studentRecords)
System.out.println(s.toString());
}
}

下一个类是

   public class StudentRecord{
public int id;
public String last;
public String first;
public int year;

public StudentRecord(int d, String lt, String ft, int yr){
id=d;
last=lt;
first=ft;
year=yr;
}

public String toString()
{
return id + " " + last + " " + first + " " + year;
}

}

谢谢!

最佳答案

更改第二个类:

public class StudentRecord
{
public int id;
public String last;
public String first;
public int year;

public StudentRecord(int d, String lt, String ft, int yr)
{
id=d;
last=lt;
first=ft;
year=yr;
}

public string toString()
{
return id + " " + last + " " + first + " " + year;
}
}

该方法称为构造函数,您可以使用它创建此类的实例。

在第二个类中,在运行循环时,您可以通过将参数传递给构造函数来创建新的 StudentRecord 对象,其中包含每个条目的实际值:

    List<StudentRecord> studentRecords = new ArrayList<StudentRecord>();
while(input.hasNext())
{
id=input.nextInt();
last=input.next();
first=input.next();
year=input.nextInt();
StudentRecord record = new StudentRecord(id, last, first, year);
studentRecords.Add(record);
System.out.println(id + " " + last + " " + first + " " + year + "\n");

}

ArrayList 将作为所有 StudentRecord 对象的存储。

如果您重写 StudentRecord 对象的 toString 方法(就像我上面所做的那样),您可以循环将所有学生记录打印到控制台:

for (StudentRecord s : studentRecords)
System.out.println(s.toString());

关于java - 2.0版本(现在添加查询),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16408979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com