题目:添加会员、显示会员和查找会员
问题:
//如果把下行代码放在循环前面,那么显示会员时会员总是最后注册的那一个,为什么?请解释原理(好像和指针和内存有关),最好有图。(为什么要在循环里面实例化会员类)          
cust=new Customer(); (在测试类的循环里)
  会员属性类:
package Classwork;public class Customer {
String customerNo;
int customerScore;
}
会员操作类:
package Classwork;public class CustManager {
//对象数组
Customer [] customers =new Customer[100];
//增加会员
public void add(Customer cust){
for(int i=0;i<customers.length;i++){
if(customers[i]==null){
customers[i]=cust;
break;
}
}
}
//显示会员
public void showCustomers(){
System.out.println("********************会员编号************************");
System.out.println("编号\t积分");
for(int i=0;i<customers.length;i++){
if(customers[i]!=null){
System.out.println(customers[i].customerNo+"\t"+customers[i].customerScore);
}
}
}
//查找会员
public int searchCust(String customerNo){
int score=-1;
int i=0;
while(customers[i]!=null){
if(customers[i].customerNo.equals(customerNo)){
score = customers[i].customerScore;
break;
}
i++;
}
return score;
}
}测试类:
package Classwork;import java.util.Scanner;public class TestC1 { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
Customer cust;
CustManager custmanager=new CustManager();
Scanner input =new Scanner(System.in);
//循环添加会员
boolean con =true;
while(con){
                           //如果把这行代码放在循环前面,那么显示会员时会员总是最后注册的那一个,为什么?          cust=new Customer();   
                           System.out.print("请输入会员编号:");
cust.customerNo=input.next();
System.out.print("请输入会员积分:");
cust.customerScore=input.nextInt();
custmanager.add(cust);
System.out.println("是否继续?");
String answer=input.next();
if(!answer.equals("y")){
con=false;
}
}
//显示会员
custmanager.showCustomers();
//查找会员
System.out.print("请输入要查找的会员编号:");
String customerNo=input.next();
int s=custmanager.searchCust(customerNo);
if(s!=-1){
System.out.print("该会员积分为:"+s);
}else{
System.out.print("不存在该会员!");
}
}
}