怎样把一个类的方法在另一个类中实现

卡布奇诺er 2012-07-25 03:34:13
package exercisepack;

public class Student
{
public int num;
public String name;
public int score;
public Student next;
public Student(int nu,String na,int sc,Student ne)
{
this.num=nu;
this.name=na;
this.score=sc;
this.next=ne;
}
public Student()
{}
}
这是我定义的一个学生类,然后我在同一个包下创建一个查找类来实现查找功能。标题上已经说了,所以这里就是要把学生里的各种方法写到查找类里。
package exercisepack;
import exercisepack.Student;

public class Search{

static Student stu;
static int length=1;
static void setNext(Student t)
{
stu=t;
}
static Student getNext()
{
return stu;
}
static void find(int nu)
{


for(int i=1;i<10;i++)
{
Student st=stu;
st=getNext();
if(nu==st.num)
{
System.out.println("学号为"+nu+"的学生成绩为:"+st.score);
}
}
}

public static void main(String[] args) {
// TODO Auto-generated method stub
Student stu=new Student(1,"stu1",(int)(Math.random()*100),null);
for(int i=1;i<10;i++)
{
setNext(new Student(i+1,"stu"+(i+1),(int)(Math.random()*100),stu));
stu=getNext();
length++;
}
find(1);
System.out.println("长度为"+length);
}

}
我是这样写的,可是我的查找函数死活都不行,我调试发现是
for(int i=1;i<10;i++)
{
Student st=stu;
st=getNext();
if(nu==st.num)
{
System.out.println("学号为"+nu+"的学生成绩为:"+st.score);
}
}
这里的问题,这里的st.num始终都没有变过,一直都死第10个学头疼生的信息,我看了整个stu对象,确实是存储了10个学生的信息。这可让我头疼啊,请高手们出谋划策啊,,,谢谢了!
...全文
264 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
卡布奇诺er 2012-07-26
  • 打赏
  • 举报
回复
谢谢大家的帮助,我已经解决了,再遇别的不能马上解决的问题,继续向大家请教哈,呵呵
卡布奇诺er 2012-07-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

最好再创建一个class类,班级,把你的学生生成一个List以后找学生就去班级去找。那里学生多
[/Quote]
要是能这样的话就好了,人家说了,不能创建链表类,要通过在学生类里包含一个另一个学生的方法去创建链表。这个问题其实是一个升级的问题,在这之前我已经做过一次,并且把这写方法都实现了。但是,java的核心思想是面向对象的包装,本身对Student的操作方法应该全部写到Student类里的,这就是我在这个问题之前做的事,然后我们头就告诉我让我在把这些方法全部写到Search类里,,这可让我头疼了,
wjsq0705 2012-07-26
  • 打赏
  • 举报
回复
最好再创建一个class类,班级,把你的学生生成一个List以后找学生就去班级去找。那里学生多
卡布奇诺er 2012-07-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

自己做个数据结构查询吧,你创建的对象,均没保存 ,怎么操作啊 ?
[/Quote]
能说明白一点么,
五哥 2012-07-26
  • 打赏
  • 举报
回复
自己做个数据结构查询吧,你创建的对象,均没保存 ,怎么操作啊 ?
卡布奇诺er 2012-07-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

Student st=stu;把这个放到循环外面。不然每次循环都会新建一个Student对象
[/Quote]

这个我已经试过了,还是不行,st.num并没有变
卡布奇诺er 2012-07-26
  • 打赏
  • 举报
回复
那个啥,忘记说了,这个是链表!!!不能用数组的,,,用数组的话我就不这么纠结了,并且我这个程序的存储也并没有错,我debug的时候看了,确确实实是存进去了10个对象,就是查找那个地方有问题
huizibayu 2012-07-25
  • 打赏
  • 举报
回复
楼上正解,楼主的程序中就没有存放生成的这10个student对象,循环了9次实际上只对一个对象在进行操作,最终也就只有一个对象,看楼主这程序是想用链表吗?
sffx123 2012-07-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

stu是一个学生对象,然后黑瞎子掰苞米,赋值一次覆盖一次,最后就只保留了最后一次的信息。
[/Quote]+1,你确定存储了是个对象?还是就打印了个length为10?你想遍历得到某个指定的num对象,Search里面加个Student数组或集合来存放加过的对象,然后遍历这个数组。
zqchn 2012-07-25
  • 打赏
  • 举报
回复
Student st=stu;把这个放到循环外面。不然每次循环都会新建一个Student对象
linghu0619 2012-07-25
  • 打赏
  • 举报
回复
stu是一个学生对象,然后黑瞎子掰苞米,赋值一次覆盖一次,最后就只保留了最后一次的信息。

62,634

社区成员

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

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