一个简单程序的错误,谢谢您来纠正

butter0000 2009-02-10 10:58:45
class Node{
int date;
Node next;
}
public class list {


public static void main(String[] args) {

try {
for(int i=0;i <3;i++)

{
Node nd=new Node();
nd.date=i;
nd=nd.next;
System.out.println(nd.date);
}
for(int j=0;j <3;j++)
{
System.out.println(nd.date);
nd=nd.next;
}

} catch (Exception e) {

}

就是想用java来实现一个链表,可是那个对象只能在那个for循环里面有效。在红的for循环就无效了,怎么把这个链表存储下来。然后在哪里都能输出呢?谢谢回答!
...全文
152 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
HinanaiTenshi 2009-02-10
  • 打赏
  • 举报
回复
有基础语法错误,主要是变量的作用范围问题.
wyquan101 2009-02-10
  • 打赏
  • 举报
回复
建议lz弄清楚链表的概念,和如何生成一个链表。
百度一下就有。
butter0000 2009-02-10
  • 打赏
  • 举报
回复
可是还要存储下他的结构啊。就是还要知道一个数的下一个数是谁。 list可以实现么?
Asinzy 2009-02-10
  • 打赏
  • 举报
回复
很简单,楼主把Node nd = new Node()写在一个{}里面了,成为了局部变量,后面肯定访问不了

class Node{
int date;
Node next;
}
public class list {


public static void main(String[] args) {

try {
for(int i=0;i <3;i++)

{
Node nd=new Node();//这里定义,是局部的
nd.date=i;
nd=nd.next;
System.out.println(nd.date);
}
for(int j=0;j <3;j++)
{
System.out.println(nd.date);//这里访问,是不行的
nd=nd.next;
}
} catch (Exception e) {

}
wclszh 2009-02-10
  • 打赏
  • 举报
回复
你将错误语句打印出来调试一下,是空指针的错误,你可以参照这样的设计
public class Link {
private Node head;
// private int count;

public Link(){
head=new Node(null);
}

private static class Node{
public Object date;
public Node next;

public Node(Object obj){
this.date=obj;
}
}
然后再添加方法
aaronyy2002 2009-02-10
  • 打赏
  • 举报
回复
Node nd=new Node();

第二个循环中nd未定义,编译应该会报错
duhongltz 2009-02-10
  • 打赏
  • 举报
回复
Node nd=new Node();
在循环里面定义的变量出了循环就出了范围。后面在引用编译通不过。
NickCheng 2009-02-10
  • 打赏
  • 举报
回复
关注!稍后给我的解答!~#
xql80329 2009-02-10
  • 打赏
  • 举报
回复
存到list 里面就OK了
list.add(nd);
butter0000 2009-02-10
  • 打赏
  • 举报
回复
我感觉那个好像是用LinkList来写,可是我不懂,哪个好心人帮我写下好么,功能跟上面的一样,十分感谢了
butter0000 2009-02-10
  • 打赏
  • 举报
回复
我写了这么一个程序

import java.io.*;
import java.util.ArrayList;

public class Point {

public static void main(String[] args) {
BufferedReader br;
ArrayList ar = new ArrayList();
String str;

try {
for (int i = 0; i < 3; i++)

{
br = new BufferedReader(new InputStreamReader(System.in));

str = br.readLine();
ar.add(new Integer(str));

}

} catch (Exception e) {

}
System.out.println(ar.toString());
System.out.println(ar.get(1));

}

}

但是这个是顺序存储,我想要链式的,就是类名.next.这样得出的。
mengqingsong_2009 2009-02-10
  • 打赏
  • 举报
回复
用集合比较不错啊,例如list或者是linkedlist
cantalou 2009-02-10
  • 打赏
  • 举报
回复
不是有LinkedList吗
mystery1004 2009-02-10
  • 打赏
  • 举报
回复
class Node{
int date;
Node next;
}

public class list {

public static void main(String[] args) {
try {
Node nd = new Node();
for (int i = 0; i < 3; i++) {
//Node nd = new Node();
nd.date = i;
nd.next = nd;
System.out.println("node:"+nd.date);
}
for(int j=0;j <3;j++)
{
System.out.println(nd.date);
nd=nd.next;
}

} catch (Exception e) {

}
}
}

运行结果:
node:0
node:1
node:2
2
2
2

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧