A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 王琪 于 2014-3-6 12:20 编辑
  1. import java.util.*;
  2. public class java3{
  3.         public static void main(String[]args){
  4.                 LinkedList2  li=new LinkedList2 ();
  5.                 Tianjia(li);
  6.                 System.out.println("添加的节点为:姓名  学号  年龄");
  7.                 System.out.print(li);
  8.                 System.out.println("取出节点的序号:");
  9.                 Integer k=new Integer(new Scanner(System.in).next());
  10.                 DATA w;
  11.                 while(true){
  12.                         try{
  13.                         w=Quchhu(li,k);
  14.                         }catch(Exception e){System.out.println("不存在 please put in new");
  15.                          k=Integer.valueOf(new Scanner(System.in).next());
  16.                         continue;}
  17.                         break;
  18.                   }
  19.                 System.out.println("移除成功.."+w);
  20.                 System.out.println("查找的key请输入..");
  21.                 String s =new Scanner (System.in).nextLine().trim();
  22.                 w=chazhao(li,s);
  23.                 if(w!=null)System.out.println("查找成功\n"+w);
  24.         }
  25.         
  26.         static void Tianjia(LinkedList2 a){
  27.                 String key="",name="";Integer age=0;
  28.                 String[]s;
  29.                 try{
  30.                         System.out.println("输入添加的节点:{ 姓名  学号  年龄  }:");
  31.                         s=(new Scanner(System.in).nextLine()).split(" ");
  32.                         name=s[0].trim();
  33.                         key=s[1].trim();
  34.                         age=Integer.valueOf(s[2].trim());
  35.                         while(age!=0){
  36.                         a.add(new DATA(name,key,age));
  37.                         System.out.println("添加成功..");
  38.                         System.out.println("输入添加的节点:{ 姓名  学号  年龄  }:");
  39.                         s=(new Scanner(System.in).nextLine()).split(" ");
  40.                         name=s[0].trim();
  41.                         key=s[1].trim();
  42.                         age=Integer.valueOf(s[2].trim());
  43.                         }
  44.                 }catch(Exception e){
  45.                 System.out.println("添加不成功..");
  46.                 Tianjia(a);}
  47.                 System.out.println(a);
  48.         }
  49.         static DATA Quchhu(LinkedList2 a,int i)throws Exception {
  50.                 DATA b=(DATA)a.get(i);
  51.                 a.remove(i);
  52.                 return b;
  53.         }
  54.         static void chazhao(LinkedList2 a,int i){
  55.                 System.out.println(a.get(i));
  56.         }
  57.         static DATA chazhao(LinkedList2 a,String s){
  58.                 ListIterator<Object> it=a.listIterator();
  59.                 while(it.hasNext()){
  60.                         Object o=it.next();
  61.                         if(((DATA)o).equals(s.trim())){
  62.                                 return (DATA)o;
  63.                         }
  64.                 }
  65.                 return null;
  66.         }
  67. }
  68. class LinkedList2 extends LinkedList<Object>{
  69.         public String toString(){
  70.                 String s="";
  71.                 int j=0;
  72.                 ListIterator<Object> i=this.listIterator();
  73.                 while(i.hasNext()){
  74.                         s+=(j++)+":"+String.valueOf(i.next())+"\n";
  75.                 }
  76.                 return s;
  77.         }
  78. }
  79. class DATA{
  80.         static String key;
  81.         static String name;
  82.         Integer age;
  83.         public DATA(){}
  84.         public DATA(String name,String key,Integer age){
  85.         this.key=key;
  86.         this.name=name;
  87.         this.age=age;
  88.         }
  89.         public String getkey(){
  90.                 return key;
  91.         }
  92.         public String toString(){
  93.                 return name+" "+key+" "+age;
  94.         }
  95. }
复制代码





class LinkedList2 extends LinkedList<Object>{
        public String toString(){
                String s="";
                int j=0;
                ListIterator<Object> i=this.listIterator();
                while(i.hasNext()){
                        s+=(j++)+":"+String.valueOf(i.next())+"\n";
                }
                return s;
        }
}

改了原来链表的输出,不知是不是这样改

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

3 个回复

正序浏览
1.同学说如果一个类的属性为静态时,那这个属性被所有对象改变,那么当这个属性变了以后所有对象的属性都会变吗class DATA{
        static String key;
        static String name;
        static Integer age;
        public DATA(){}
        public DATA(String name,String key,Integer age){
        this.key=key;
        this.name=name;
        this.age=age;
        }
        public String getkey(){
                return key;
        }
        public String toString(){
                return name+" "+key+" "+age;
        }
}

调用下面这个方法就保存了最后的输入,所有对象属性都一样了啊?
static void Tianjia(LinkedList2 a){
                String key="",name="";Integer age=0;
                String[]s;
                try{
                        System.out.println("输入添加的节点:{ 姓名  学号  年龄  }:");
                        s=(new Scanner(System.in).nextLine()).split(" ");
                        name=s[0].trim();
                        key=s[1].trim();
                        age=Integer.valueOf(s[2].trim());
                        while(age!=0){
                        a.add(new DATA(name,key,age));
                        System.out.println("添加成功..");
                        System.out.println("输入添加的节点:{ 姓名  学号  年龄  }:");
                        s=(new Scanner(System.in).nextLine()).split(" ");
                        name=s[0].trim();
                        key=s[1].trim();
                        age=Integer.valueOf(s[2].trim());
                        }
                }catch(Exception e){
                System.out.println("添加不成功..");
                Tianjia(a);}
                System.out.println(a);
        }

2.我把做后的代码这里改成了
  1. <b>static DATA chazhao(LinkedList2 a,String s){
  2.                 ListIterator<Object> it=a.listIterator();
  3.                 while(it.hasNext()){
  4.                         DATA o=(DATA)(it.next());
  5.                         if(o.getkey().equals(s.trim())){
  6.                                 return (DATA)o;
  7.                         }
  8.                 }
  9.                 return null;
  10.         }</b>
复制代码
然后调用
  1. <b>String s =new Scanner (System.in).nextLine().trim();
  2.                 w=chazhao(li,s);
  3.                 if(w!=null)System.out.println("查找成功\n"+w);</b>
复制代码
好像做出来了


但是

DATA o=(DATA)(it.next());
(DATA)(it.next())为什么不同 啊
o.getkey()可以调出来但是没有(DATA)(it.next()) .getkey() 为什么呢?


回复 使用道具 举报
我想通过key 这个String查找,但就是没有办法通过迭代器返回对象,没法得到key属性
  1. static DATA chazhao(LinkedList2 a,String s){
  2.                 ListIterator<Object> it=a.listIterator();
  3.                 while(it.hasNext()){
  4.                         Object o=it.next();
  5.                         (DATA)o).get
  6.                         if((.equals(s.trim())){
  7.                                 return (DATA)o;
  8.                         }
  9.                 }
  10.                 return null;
  11.         }
复制代码



class DATA{
        String key;
        String name;
        Integer age;
        public DATA(){}
        public DATA(String name,String key,Integer age){
        this.key=key;
        this.name=name;
        this.age=age;
        }
        public String getkey(){
                return key;
        }


这个就没办法做了
回复 使用道具 举报
最后我改了一下这个

  1.         String key;
  2.         String name;
  3.         Integer age;
复制代码

去掉static就行了

输入添加的节点:{ 姓名  学号  年龄  }:
www 22 33
添加成功..
输入添加的节点:{ 姓名  学号  年龄  }:
jjh 333 22
添加成功..
输入添加的节点:{ 姓名  学号  年龄  }:
0 0 0
[www 22 33, jjh 333 22]
添加的节点为:姓名  学号  年龄
[www 22 33, jjh 333 22]取出节点的序号:

为什么啊?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马