黑马程序员技术交流社区
标题:
这个怎么就添加了最后一个呢?没添加进去(完成)
[打印本页]
作者:
王琪
时间:
2014-3-4 00:38
标题:
这个怎么就添加了最后一个呢?没添加进去(完成)
本帖最后由 王琪 于 2014-3-6 12:20 编辑
import java.util.*;
public class java3{
public static void main(String[]args){
LinkedList2 li=new LinkedList2 ();
Tianjia(li);
System.out.println("添加的节点为:姓名 学号 年龄");
System.out.print(li);
System.out.println("取出节点的序号:");
Integer k=new Integer(new Scanner(System.in).next());
DATA w;
while(true){
try{
w=Quchhu(li,k);
}catch(Exception e){System.out.println("不存在 please put in new");
k=Integer.valueOf(new Scanner(System.in).next());
continue;}
break;
}
System.out.println("移除成功.."+w);
System.out.println("查找的key请输入..");
String s =new Scanner (System.in).nextLine().trim();
w=chazhao(li,s);
if(w!=null)System.out.println("查找成功\n"+w);
}
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);
}
static DATA Quchhu(LinkedList2 a,int i)throws Exception {
DATA b=(DATA)a.get(i);
a.remove(i);
return b;
}
static void chazhao(LinkedList2 a,int i){
System.out.println(a.get(i));
}
static DATA chazhao(LinkedList2 a,String s){
ListIterator<Object> it=a.listIterator();
while(it.hasNext()){
Object o=it.next();
if(((DATA)o).equals(s.trim())){
return (DATA)o;
}
}
return null;
}
}
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;
}
}
class DATA{
static String key;
static 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;
}
public String toString(){
return name+" "+key+" "+age;
}
}
复制代码
图片1.png
(45.47 KB, 下载次数: 3)
下载附件
2014-3-4 00:40 上传
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;
}
}
改了原来链表的输出,不知是不是这样改
作者:
王琪
时间:
2014-3-4 07:26
最后我改了一下这个
String key;
String name;
Integer age;
复制代码
去掉static就行了
输入添加的节点:{ 姓名 学号 年龄 }:
www 22 33
添加成功..
输入添加的节点:{ 姓名 学号 年龄 }:
jjh 333 22
添加成功..
输入添加的节点:{ 姓名 学号 年龄 }:
0 0 0
[www 22 33, jjh 333 22]
添加的节点为:姓名 学号 年龄
[www 22 33, jjh 333 22]取出节点的序号:
为什么啊?
作者:
王琪
时间:
2014-3-4 07:40
我想通过key 这个String查找,但就是没有办法通过迭代器返回对象,没法得到key属性
static DATA chazhao(LinkedList2 a,String s){
ListIterator<Object> it=a.listIterator();
while(it.hasNext()){
Object o=it.next();
(DATA)o).get
if((.equals(s.trim())){
return (DATA)o;
}
}
return null;
}
复制代码
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;
}
这个就没办法做了
作者:
王琪
时间:
2014-3-4 10:44
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.我把做后的代码这里改成了
<b>static DATA chazhao(LinkedList2 a,String s){
ListIterator<Object> it=a.listIterator();
while(it.hasNext()){
DATA o=(DATA)(it.next());
if(o.getkey().equals(s.trim())){
return (DATA)o;
}
}
return null;
}</b>
复制代码
然后调用
<b>String s =new Scanner (System.in).nextLine().trim();
w=chazhao(li,s);
if(w!=null)System.out.println("查找成功\n"+w);</b>
复制代码
好像做出来了
图片1.png
(57.27 KB, 下载次数: 1)
下载附件
2014-3-4 10:36 上传
但是
DATA o
=(DATA)(it.next());
和
(DATA)(it.next())
为什么不同 啊
o.getkey()可以调出来
但是
没有
(DATA)(it.next())
.getkey()
为什么呢?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2