Java 将3个变量与列表2关联 对不起,双张贴,但我需要这个主题运行,因为我的前一个问题搁置,已经这样一个小时,请考虑这个问题,谢谢。p>
我试图添加3个变量:2个字符串和一个double到一个列表中,并使它们相互对应。比如说,我输入一个字符串,得到一个双精度或另一个字符串。既然列表实际上可以容纳1个变量,那么我该怎么做呢?或者我如何使用列表和其他方法使这3个变量相互对应 例如:Java 将3个变量与列表2关联 对不起,双张贴,但我需要这个主题运行,因为我的前一个问题搁置,已经这样一个小时,请考虑这个问题,谢谢。p>,java,list,Java,List,我试图添加3个变量:2个字符串和一个double到一个列表中,并使它们相互对应。比如说,我输入一个字符串,得到一个双精度或另一个字符串。既然列表实际上可以容纳1个变量,那么我该怎么做呢?或者我如何使用列表和其他方法使这3个变量相互对应 例如:SteveJobs 2050.5其中Steve是a,Jobs是b,2050.5是c。我输入乔布斯或史蒂夫,它给我2050.5 以下是迄今为止的代码: public class Person implements Comparable<Object>
SteveJobs 2050.5
其中Steve是a
,Jobs是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);
}
}
公共类人员实现可比较{
字符串filename=“people.txt”;
私家姓;
私有字符串名;
私人双薪;
私人名单;
公众人物(字符串姓氏、字符串名、双薪){
姓=姓;
名字=名字;
薪金=薪金;
}
公共void生成列表(){
试一试{
FileReader fr=新的FileReader(文件名);
BufferedReader读取器=新的BufferedReader(fr);
字符串行=reader.readLine();
扫描仪扫描=空;
字符串fn=“”;
字符串sn=“”;
双s=0;
while(行!=null){
扫描=新扫描仪(行);
sn=scan.next().toString();
fn=scan.next().toString();
s=scan.nextInt();
支票(sn);
检查(fn);
检查d(s);
//添加的方法
System.out.println(“姓氏:+sn+”名字:+fn+”薪水:+s);
line=reader.readLine();
}
reader.close();
}
catch(filenotfounde异常){
System.out.println(“未找到文件:“+filename”);
}
捕获(IOE异常){
System.out.println(“无法读取文件:+filename”);
}
}
公共整数比较对象(对象arg0){
返回0;
}
公共字符串getNames(){
返回姓氏;
}
公共字符串getFirstName(){
返回名字;
}
公共双薪制{
返回工资;
}
公共无效检查(字符串m){
试一试{
如果(m==null){
抛出新IOException();
}
}捕获(IOE异常){
System.out.println(“错误行:“+filename”);
}
}
因为一切(不包括int、float..)是java中的对象,您可以使用对象列表。原始变量将通过自动装箱包装为整数、浮点,但在处理数据时,您仍然必须控制正在处理的对象的数据类型。因此,我建议您创建带有3个字段的自定义类,或者将所有内容转换为字符串并使用Str列表取而代之的是一些建议:
1) 关注问题的关键。看来数据结构才是最重要的,而不是文件I/O部分。所以现在先忘掉I/O部分吧
2) 将人员
与包含人员的数据结构分开。这是不同的事情
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() ...
}
公共接口PersonLookup{
无效添加(人);
设置get(字符串键);
}
公共阶层人士{
私有字符串firstName,lastName;
私人双薪;
公众人物(字串姓氏、字串姓氏、双薪){
this.firstName=firstName;
this.lastName=lastName;
这个。薪水=薪水;
}
…获得者。。。
…等于()和hashCode()。。。
}
4) 请记住以下问题:如果两个人的名字或姓氏相同,会发生什么情况?如果某人的名字和某人的姓氏相同,会发生什么情况?在执行查找时,客户端是否需要指示该名称是姓还是名,或者客户端只是指定一个名称,然后指定data结构必须同时搜索名字和姓氏?您对这些问题的回答不仅会影响数据结构的实现,还会影响接口。(提示:想想我为什么使用上面的集合
)
祝你好运。除非你做出一些努力,否则我们不会帮助你。3个变量1个字符串得到双1个变量…Whaaaaat???你的第一个问题已经结束了,因为没有人知道你的问题是什么。你刚刚重新提交了同一个问题。你需要提供你试图完成的示例,展示你的代码我强烈建议您阅读和,然后回来编辑这个问题,这样我们就可以理解您的目的。我猜您的目标是:您有大量相关数据,比如说由两个字符串和一个数字(双精度)组成。您想创建一个包含这些3元素对象实例的列表。我接近了吗?不是认真的。我有两个字符串,分别是
a
和b
和一个双c
,我想使用列表将它们关联起来。例如:“Steve Jobs 2050.5”史蒂夫是a
,乔布斯是b
,2050.5是c
。我输入乔布斯或史蒂夫,它给我2050.5。我该怎么做?我还可以有“比尔·盖茨30.7”和“G Z 1.1”这两个我想要的数量。