日期:2014-05-20  浏览次数:20674 次

(被一道例题难住了)大神们求救啊!!!
我做的练习题,总是卡在测试类的输出上面(在控制台总是输出地址信息啊),求大伙帮忙找出错误,并解释下怎么改正啊,还有那个数组的实例化是啥意思啊????以下是我的代码
public class XIV1i {
int vipNumber;
int vipScore;
}
public class XIV1ii {
XIV1i[] a=new XIV1i[100];
XIV1i[] b=new XIV1i[100];
public void add(XIV1i vip){
for(int i=0;i<a.length;i++){
if(a[i]==null){
a[i]=vip;
break;
}
}
}
public void show(){
for(int i=0;i<a.length;i++){
System.out.print(a[i]+""+i);
}
}
}
import java.util.Scanner;
public class XIV1测试 {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
XIV1ii x=new XIV1ii();
XIV1i[] v=new XIV1i[1];
for(int i=0;i<1;i++){
System.out.print("输入会员编号:");
v[i]=new XIV1i();
v[i].vipNumber=in.nextInt();
x.add(v[i]);
}
System.out.println("***会员列表***");
System.out.println("编号");
x.show();
}
}

------解决方案--------------------
你这个有两个问题,第一个你第二个类中的show方法的循环有问题,你的跳出条件是i<a.length,这里的a.length是100不是1,但是你的add方法只有a[0]被存入数据(就是vipnumber为1的那个实例)。
第二,你show方法中,输出的是那个类对象,所以肯定输出的是这个对象在内从中的地址,你可以输出a[i].vipNumber,或者a[i].getClass().getName();
还有你的测试类中,那个循环貌似没有用。
------解决方案--------------------
数组对象中存储的是所创建的对象的引用(也就是地址了)
------解决方案--------------------
引用:
你这个有两个问题,第一个你第二个类中的show方法的循环有问题,你的跳出条件是i<a.length,这里的a.length是100不是1,但是你的add方法只有a[0]被存入数据(就是vipnumber为1的那个实例)。
第二,你show方法中,输出的是那个类对象,所以肯定输出的是这个对象在内从中的地址,你可以输出a[i].vipNumber,或者a[i].getCla……

class XIV1i {
int vipNumber;
int vipScore;
}

public class XIV1ii {
XIV1i[] a = new XIV1i[100];
public void add(XIV1i vip) {
for (int i = 0; i < a.length; i++) {
if (a[i] == null) {
a[i] = vip;
break;
}
}
}
public void show() {
for (int i = 0; i < a.length; i++) {
if (a[i]!= null)
System.out.print(a[i].vipNumber + "   " +a[i].vipScore);
}
}
}

import java.util.Scanner;

public class XIV1 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
XIV1ii x = new XIV1ii();
XIV1i[] v = new XIV1i[1];
for (int i = 0; i < 1; i++) {
System.out.print("输入会员编号:");
v[i] = new XIV1i();
v[i].vipNumber = in.nextInt();
v[i].vipScore = in.nextInt();
x.add(v[i]);
}
System.out.println("***会员列表***");
System.out.println("编号");
x.show();
}
}