很抱歉双重发布,但我需要运行这个主题,因为我的上一个问题被搁置了,已经有一个小时了,请考虑这个问题,谢谢。
我正在尝试添加3个变量:2个字符串和一个Double给List,并使它们彼此对应。说,我输入1个字符串并获得一个双字符串或另一个字符串。现在,我怎么做,因为List实际上可以容纳1个变量?或者如何使用List和可能的其他方法使这3个变量相互对应?
例如:Steve Jobs 2050.5
,其中Steve为a
,作业为b
,而2050.5为c
。我输入乔布斯或史蒂夫它给了我2050.5。
以下是目前的代码:
public class Person implements Comparable<Object> {
String filename = "people.txt";
private String surname;
private String firstName;
private double salary;
private List<Person> list;
public Person(String Surname, String FirstName, double Salary){
surname = Surname;
firstName = FirstName;
salary = Salary;
}
public void makeList(){
try{
FileReader fr = new FileReader(filename);
BufferedReader reader = new BufferedReader(fr);
String line = reader.readLine();
Scanner scan = null;
String fn = "";
String sn = "";
double s = 0;
while(line != null){
scan = new Scanner(line);
sn = scan.next().toString();
fn = scan.next().toString();
s = scan.nextInt();
check(sn);
check(fn);
checkd(s);
// Methods to add
System.out.println("Surname: " + sn +" First Name: "+ fn + " Salary:"+ s);
line = reader.readLine();
}
reader.close();
}
catch(FileNotFoundException e){
System.out.println("File not found: " + filename);
}
catch(IOException e){
System.out.println("Can't read file: " + filename);
}
}
public int compareTo(Object arg0) {
return 0;
}
public String getSurname(){
return surname;
}
public String getFirstName(){
return firstName;
}
public double getSalary(){
return salary;
}
public void check(String m) {
try {
if (m == null) {
throw new IOException();
}
} catch (IOException e) {
System.out.println("Wrong lines: " + filename);
}
}
答案 0 :(得分:0)
由于所有东西(不包括int,float ..)都是java中的对象,因此可以使用对象列表。原始变量将通过自动装箱包装到Integer,Float中,但在使用数据进行操作时,您仍然需要控制您正在操作的对象的数据类型..所以我建议您创建包含3个字段的自定义类或将所有内容转换为字符串并改用字符串列表。
答案 1 :(得分:0)
一些建议:
1)关注问题的关键所在。似乎数据结构是最重要的,而不是文件I / O部分。所以暂时忘记I / O部分。
2)将Person
与包含人员的数据结构分开。那些是不同的东西。
3)考虑数据结构的接口是什么。我认为它是这样的,虽然我不是肯定的我完全理解这里的要求:
public interface PersonLookup {
void add(Person person);
Set<Person> get(String key);
}
public class Person {
private String firstName, lastName;
private Double salary;
public Person(String firstName, String lastName, Double salary) {
this.firstName = firstName;
this.lastName = lastName;
this.salary = salary;
}
... getters ...
... equals() and hashCode() ...
}
4)请记住以下问题:如果两个人的名字相同或姓氏相同,会发生什么?如果某人的名字与某人的姓名相同,会发生什么?在进行查找时,客户端是否需要指明名称是第一个名称还是姓氏,或者客户端是否只是指定名称,然后数据结构必须同时搜索名字和姓氏?您对问题的回答不仅会影响数据结构的实现,还会影响界面。 (提示:想想为什么我使用上面的Set
。)