黑马程序员技术交流社区

标题: 集合存储、代码 [打印本页]

作者: Emperors    时间: 2014-6-12 22:36
标题: 集合存储、代码
本帖最后由 Emperors 于 2014-6-13 00:56 编辑

public class Worker {

        private int age;
        private String name;
        private double salary;

        public Worker() {
        }

        public Worker(String name, int age, double salary) {
                this.name = name;
                this.age = age;
                this.salary = salary;
        }

        public int getAge() {
                return age;
        }

        public void setAge(int age) {
                this.age = age;
        }

        public String getName() {
                return name;
        }

        public void setName(String name) {
                this.name = name;
        }

        public double getSalary() {
                return salary;
        }

        public void setSalary(double salary) {
                this.salary = salary;
        }
        public void work(){
                System.out.println(name + "work");
                }
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;


public class WorkerTest {
        public static void main(String[] args) {

                LinkedList<Worker>  li = new LinkedList<Worker>();
               
                Worker w1 = new Worker("zhang3",18,3000);
                Worker w2 = new Worker("li4",25,3500);
                Worker w3 = new Worker("wang5",22,3200);
                Worker w =  new Worker("zhao6",24,3300);
               
               
                li.add(w1);
                li.add(w2);
                li.add(w3);
//        将指定元素插入此列表的开头。        
                li.addFirst(w);
//                删除
                li.remove(w3);
               
        Iterator<Worker> it = li.iterator();
                while (it.hasNext()){
                        Worker s = it.next();
                        
                        System.out.println(s);
                }
               
        }
}

我打印的结果为:it.cast.Worker@7366fdde
                          it.cast.Worker@6ea53502
                           it.cast.Worker@203b4f0e

我不明白啊    为什么会打印出这样的结果啊,我就是找不着哪里错了   

应该打出的是名字,年龄,工资啊

求指教???
作者: love~陌    时间: 2014-6-12 22:54
你在WorKer类中复写toString()方法即可
作者: 人心如水    时间: 2014-6-12 22:56
今天老师刚讲到这里,你最后集合里的WORK是什么  不是字符串吗String,我也不清楚,你没有用eclipse吗
作者: Emperors    时间: 2014-6-12 23:06
love~陌 发表于 2014-6-12 22:54
你在WorKer类中复写toString()方法即可

我试过了,不行啊 跟现在的代码打印的结果一样
作者: Emperors    时间: 2014-6-12 23:10
人心如水 发表于 2014-6-12 22:56
今天老师刚讲到这里,你最后集合里的WORK是什么  不是字符串吗String,我也不清楚,你没有用eclipse吗 ...

用了    是工作的意思,概括了ToString
作者: wssjdysf    时间: 2014-6-12 23:11
大哥,现在Worker s = it.next();返回的是一个对象,你现在打印的是对象的本身,你想打印名字什么的,用s.getAge(),s.getNmae(),你可以进toStrig()方法看下吧,
作者: moon1993zs    时间: 2014-6-12 23:18
哥们,你打印的是对象的引用。是个地址。所以应该获取对象的方法来打印数据。
作者: Emperors    时间: 2014-6-12 23:19
wssjdysf 发表于 2014-6-12 23:11
大哥,现在Worker s = it.next();返回的是一个对象,你现在打印的是对象的本身,你想打印名字什么的,用s.g ...

  谢谢      那应该怎么改呢   我试着改过了,运行后报错啊
作者: Emperors    时间: 2014-6-12 23:24
moon1993zs 发表于 2014-6-12 23:18
哥们,你打印的是对象的引用。是个地址。所以应该获取对象的方法来打印数据。  ...

谢谢   那应该怎样获取对象的方法,用代码实现呢  求详细指教
作者: 寐海流风    时间: 2014-6-12 23:36
package com.itheima;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;

public class WorkerTest {
        public static void main(String[] args) {

                LinkedList<Worker>  li = new LinkedList<Worker>();
            
                Worker w1 = new Worker("zhang3",18,3000);
                Worker w2 = new Worker("li4",25,3500);
                Worker w3 = new Worker("wang5",22,3200);
                Worker w =  new Worker("zhao6",24,3300);                   
                           
                li.add(w1);
                li.add(w2);
                li.add(w3);
                //将指定元素插入此列表的开头。        
                li.addFirst(w);
                //删除
                li.remove(w3);
            
                Iterator<Worker> it = li.iterator();
                while (it.hasNext()){
                        Worker s = it.next();
                    
                        System.out.println("姓名:"+s.getName()+","+s.getAge()+"岁,"+"工资是"+s.getSalary()+"分。");
                }
            
        }
}


class Worker {

    private int age;
    private String name;
    private double salary;

    public Worker() {
    }

    public Worker(String name, int age, double salary) {
            this.name = name;
            this.age = age;
            this.salary = salary;
    }

    public int getAge() {
            return age;
    }

    public void setAge(int age) {
            this.age = age;
    }

    public String getName() {
            return name;
    }

    public void setName(String name) {
            this.name = name;
    }

    public double getSalary() {
            return salary;
    }

    public void setSalary(double salary) {
            this.salary = salary;
    }
    public void work(){
            System.out.println(name + "work");
    }
}

这样就对了。你要使用s.getName;s.getSalary;s.getAge方法
作者: wssjdysf    时间: 2014-6-12 23:37
Iterator<Worker> it = li.iterator();
                 while (it.hasNext()){
                         Worker s = it.next();
                         System.out.println(s);
                         System.out.println(s.getAge());
                 }
                 
         }
作者: See_the_sun    时间: 2014-6-13 00:04
本帖最后由 See_the_sun 于 2014-6-13 00:23 编辑

迭代出来的对象是一个Worker类型,他里面有3个成员。所以你要分别调用成员方法打印出来。只要在迭代器下加下面这句即可
System.out.println("姓名:"+s.getName()+","+s.getAge()+"岁,"+"工资是"+s.getSalary());

方法二:在Worker中加段代码
         public String toString()
         {
         return "name:"+this.name+"age:"+this.age+"salary:"+this.salary;
         }

作者: Emperors    时间: 2014-6-13 00:54
寐海流风 发表于 2014-6-12 23:36
package com.itheima;
import java.util.ArrayList;
import java.util.Iterator;

哦哦   谢了   ,我懂了
作者: Emperors    时间: 2014-6-13 00:55
See_the_sun 发表于 2014-6-13 00:04
迭代出来的对象是一个Worker类型,他里面有3个成员。所以你要分别调用成员方法打印出来。只要在迭代器下加 ...

谢谢   我明白了
作者: love~陌    时间: 2014-6-13 17:58
Emperors 发表于 2014-6-12 23:06
我试过了,不行啊 跟现在的代码打印的结果一样

嗯啊。重新给我发个这个程序的需求~我不想看代码,只看需求,然后我给你写一个吧
作者: Emperors    时间: 2014-6-14 00:09
love~陌 发表于 2014-6-13 17:58
嗯啊。重新给我发个这个程序的需求~我不想看代码,只看需求,然后我给你写一个吧 ...

非常感谢了   我已经找到问题了,不过还是要谢谢你  




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2