import java.util.*;
public class zuoye1 { /**计算工人工资
 * 作者:景红飞
 * 时间:2008-7-28
 */
           
public static void main(String[] args) {
double peoplecount[];
String s;
int i,renshu;
    gz people=new gz();
    Scanner input=new Scanner(System.in);
    System.out.println("请输入要存储工人工资的人数:");
    renshu=input.nextInt();
    peoplecount=new double[renshu];
    for(i=0;i<renshu;i++){
    peoplecount[i]=people.gongzi(peoplecount);
System.out.println("还要继续吗?不想输入了请输入n,继续的话那就输入y:");
s=input.next();
if(s.equalsIgnoreCase("n")){
     break;
    }
 if(s.equalsIgnoreCase("y")){
continue;
}
    
}
      for(int j=0;j<=i;j++){
System.out.println(people.name[j]+"的总工资是: "+peoplecount[j]);
      }
}}
class gz{      int i=0,l;
            zuoye1 p=new zuoye1();
String[]  name;
double  gongzidx,kaohe,jixiao,zgz;
Scanner input=new Scanner(System.in);
public double gongzi(double[] peoplecount){
        l=peoplecount.length;
        name=new String[l];
System.out.println("请输入工人姓名:");
name[i++]=input.next();
System.out.println("请输入工人工资底薪:");
gongzidx=input.nextDouble();
System.out.println("请输入工人考核工资:");
kaohe=input.nextDouble();
System.out.println("请输入工人绩效:");
jixiao=input.nextDouble();
zgz=(gongzidx+kaohe)*jixiao;
return zgz;
}
}问题:在class gz这个类里的数组name 为什么不能在方法gongzi()里面定义,一在方法gongzi外面定义就只能输出数组的最后一个元素,之前都数不出来,但在方法外面定义就好了 可以输出全部的元素;不知道是怎么回事,望各位大虾帮帮!(初学者,很可怜;)帮帮帮...................

解决方案 »

  1.   

    import java.util.*;public class zuoye1 { /**
     * 计算工人工资 作者:景红飞 时间:2008-7-28
     */ public static void main(String[] args) {
    double peoplecount[];
    String s;
    int i, renshu;
    gz people = new gz();
    Scanner input = new Scanner(System.in);
    System.out.println("请输入要存储工人工资的人数:");
    renshu = input.nextInt();
    peoplecount = new double[renshu];
    for (i = 0; i < renshu; i++) {
    peoplecount[i] = people.gongzi(peoplecount);
    System.out.println("还要继续吗?不想输入了请输入n,继续的话那就输入y:");
    s = input.next();
    if (s.equalsIgnoreCase("n")) {
    break;
    }
    if (s.equalsIgnoreCase("y")) {
    continue;
    } }
    for (int j = 0; j <= i; j++) {
    System.out.println(people.name[j] + "的总工资是: " + peoplecount[j]);
    }
    }}class gz {
    int i = 0, l;
    zuoye1 p = new zuoye1();
    String[] name = new String[10]; //这里定义好了一个数组,则程序正常
    double gongzidx, kaohe, jixiao, zgz;
    Scanner input = new Scanner(System.in); public double gongzi(double[] peoplecount) {
    /*l=peoplecount.length;
            name=new String[l]; */  
    /**
     * 如果在这里定义的话, 则表示每次进入这个方法都要重新定义一遍数组, 
     * 所以你上次写在数组的东西,不能被保存,因为这个数组的引用指向了另外一块区域。
     */

    System.out.println("请输入工人姓名:");
    name[i++] = input.next();
    System.out.println("请输入工人工资底薪:");
    gongzidx = input.nextDouble();
    System.out.println("请输入工人考核工资:");
    kaohe = input.nextDouble();
    System.out.println("请输入工人绩效:");
    jixiao = input.nextDouble();
    zgz = (gongzidx + kaohe) * jixiao;
    return zgz;
    }
    }