java 对象数组输出问题

importjava.util.*;classStudent{publicstaticStringname;publicstaticintid=0,status=0;pu... import java.util.*;

class Student
{
public static String name;
public static int id=0,status=0;

public static void main(String[] args)
{
int i=0,j=0,num=0;
Student[] student=new Student[5];
Random rand=new Random();
Scanner cin=new Scanner(System.in);

System.out.println("********输入区*********");
System.out.println();

for(i=0;i<5;i++)
{
System.out.print(i+1+"请输入学生的姓名:");
student[i].name=cin.next();
student[i].id=Math.abs(rand.nextInt());
System.out.print(i+1+"该学生的学号:");
System.out.println(student[i].id);
System.out.print(i+1+"该学生所在的年级:");
student[i].status=rand.nextInt(4);
while(student[i].status==0) student[i].status=rand.nextInt(4);
System.out.println(student[i].status);
System.out.println();
}

System.out.println("********显示区*********");
System.out.println();

while(j<5)
{
if(student[j].status==3)
{
System.out.println("所有三年级学生的姓名和id是:");
System.out.println(student[j].name+" "+student[j].id);
num++;
}
j++;
}

if(num==0) System.out.print("没有三年级的学生");
}
}

while处存在问题 求解决方法以及原因分析
展开
 我来答
冰火两重天
2011-09-30 · TA获得超过1425个赞
知道小有建树答主
回答量:1489
采纳率:0%
帮助的人:998万
展开全部

name,id,status怎么是static呢?改成下面的:

public class Student

{

public String name;

public  int id=0;

public int status=0;

public static void main(String[] args) 

{

int i=0,j=0,num=0;

Student[] student=new Student[5];

for (int a=0;a<student.length;a++) {

student[a] = new Student();

}

Random rand=new Random();

Scanner cin=new Scanner(System.in);

System.out.println("********输入区*********");

System.out.println();

for(i=0;i<5;i++)

{

System.out.print(i+1+"请输入学生的姓名:");

student[i].name=cin.next();

    student[i].id=Math.abs(rand.nextInt());

System.out.print(i+1+"该学生的学号:");

System.out.println(student[i].id);

System.out.print(i+1+"该学生所在的年级:");

    student[i].status=rand.nextInt(4);

while(student[i].status==0) student[i].status=rand.nextInt(4);

System.out.println(student[i].status);

System.out.println();

        }

System.out.println("********显示区*********");

System.out.println();

while(j<5)

if(student[j].status==3)

    {

System.out.println("所有三年级学生的姓名和id是:");

    System.out.println(student[j].name+"  "+student[j].id);

num++;

}

j++;

}

if(num==0) System.out.print("没有三年级的学生");

}

}

miniappluLfSjrSQ9G71
2011-09-30 · 超过19用户采纳过TA的回答
知道答主
回答量:80
采纳率:0%
帮助的人:18.6万
展开全部
public static String name;
public static int id=0,status=0;
这2句有问题
static 数据成员是静态数据成员
对于非静态数据成员,每个类对象都有自己的拷贝。而静态数据成员被当作是类的成员。无论这个类的对象被定义了多少个,静态数据成员在程序中也只有一份拷 贝,由该类型的所有对象共享访问。也就是说,静态数据成员是该类的所有对象所共有的。对该类的多个对象来说,静态数据成员只分配一次内存,供所有对象共 用。所以,静态数据成员的值对每个对象都是一样的,它的值可以更新
所有你给id最后赋的值是1
那所有的student的id都是1
所有输出无
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
嘸限畅赽
2011-09-30 · TA获得超过357个赞
知道小有建树答主
回答量:413
采纳率:50%
帮助的人:111万
展开全部
你应该再看看引用类形的变量 ..和一般变量的区别......
Student[] student=new Student[5];
你在For的外面实例化这个数组对象...
在for的内部不管你访问的下表是多少..都是指向时一个内存地址.....说白了....你把实例化这步..放到for里面......就OK了...
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luoxuanjin
2011-09-30 · TA获得超过252个赞
知道小有建树答主
回答量:156
采纳率:0%
帮助的人:175万
展开全部
两个原因:
1, public static String name;
public static int id=0,status=0;
把static去掉吧,要不就是所有对象共享同一个数据,不会一个对象一个数据了。
2,Student[] student=new Student[5];
虽然声明了长度为5的Student数组,可是没有对数组进行初始化。
for(int m=0;m<5;m++){
student[m] = new Student();
}
以上两个问题改了就好了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
松甜恬0Je4ba
2011-09-30 · TA获得超过2.6万个赞
知道大有可为答主
回答量:7475
采纳率:100%
帮助的人:3477万
展开全部
public static String name;
public static int id=0,status=0;
这里为什么要用static呢???
修改为
public String name;
public int id=0,status=0;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式