A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曾翰翰 中级黑马   /  2012-11-1 21:50  /  2419 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package day01;
public class Employee {
public Employee(String n,int i){
  String name = n;
  int id = i;
}
private static int  id;
public static void setId(){
  id++;
}
public static void main(String args[]){
Employees[] ee =new Employees[3];
ee[0] = new Employees("张三",1000);
ee[1] = new Employees("李四",2000);
ee[2] = new Employees("王五",1800);
for(int i = 0;i<ee.length;i++){
  setId();
  System.out.println("名字" + ee[i].getName() +" ID=" + ee[i].getId());
}
}
}
运行结果是
名字张三 ID=null
名字李四 ID=null
名字王五 ID=null
怎么不是
名字张三 ID=1801
名字李四 ID=1802
名字王五 ID=1803


评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1

查看全部评分

11 个回复

倒序浏览
setId()方法中的id虽然可以做到自增的效果,但是这个id却始终没有被赋值。
ee[0] = new Employees("张三",1000);
ee[1] = new Employees("李四",2000);
ee[2] = new Employees("王五",1800);
这三条赋值语句中所赋值的引用是一个临时变量id;
对构造方法进行如下修改即可
public Employee(String n,int i){
  this.name = n;
  this.id = i;
}

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1

查看全部评分

回复 使用道具 举报
楼主的源代码很乱 而且有很多错误 怎么会有输出结果
错误一:Employees[] ee =new Employees[3]; Employees没有定义应改为Employee
错误二:ee[0] = new Employees("张三",1000); 错误同上 另外Employee类的初始化方法错误,传的参数无效
错误三: ee[i].getName()   getName()方法并没有定义,此处更不能用来调用获取那么的值
错误四:ee[i].getId() 此处的getId()亦没有定义

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1

查看全部评分

回复 使用道具 举报
额。。部分代码是copy过来的。。。5555.。。果然坑啊、、ctrl+c  ctrl+v果然害死人啊。。之前那个方法重载那个里面有。但是类名忘了改了。。

评分

参与人数 1黑马币 +3 收起 理由
小灰灰 + 3 淡定

查看全部评分

回复 使用道具 举报
至于其中的错误我也看到了,既然你有输出结果,我想应该是少粘贴了一部分代码。这个可以理解,所以我就针对我所看到的问题做出了解答
回复 使用道具 举报
我定义了getName()方法后   System.out.println("名字" + ee[i].getName() +" ID=" + ee[i].getId());
括号里就整个报错了。。
package day01;

public class Employee {
       
       
        private String name;
        public Employee(String n,int i){
                String name = n;
                int id = i;
        }
        private static int  id;
        public static void setId(){
                id++;
        }
        public static void main(String args[]){
        Employee[] ee =new Employee[3];
        ee[0] = new Employee("张三",1000);
        ee[1] = new Employee("李四",2000);
        ee[2] = new Employee("王五",1800);
        for(int i = 0;i<ee.length;i++){
                setId();
                System.out.println("名字" + ee[i].getName() +" ID=" + ee[i].setId());
        }
        }
       
        public String getName() {
                return getName();
        }
        public void setName(String name) {
                this.name = name;
        }
        }
╮(╯▽╰)╭。。凌乱了

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1

查看全部评分

回复 使用道具 举报
完整代码,运行试下吧
class Employees {
        private String name;

        public String getName() {
                return name;
        }
        private static int id; // static修饰的变量是共享的数据,默认初始为0;
        public Employees(String n, int i) {//每调用一次构函,相当于id重新赋值一次
                name = n;
                id = i;
        }
        public int getId() {return id;}
        public static void setId() {id++;}
        public static void main(String args[]) {
                Employees[] ee = new Employees[3];
                ee[0] = new Employees("张三", 1000);// 第一次赋值后共享数据变成1000
                ee[1] = new Employees("李四", 2000);// 第二次赋值后共享数据变成2000
                ee[2] = new Employees("王五", 1800);// 第三次赋值后共享数据变成1800
                for (int i = 0; i < ee.length; i++) {
                        setId(); //       循环三次,id进行了三次自增,打印结果 为1801 1802 1803
                        System.out.println("名字" + ee[i].getName() + " ID=" + ee[i].getId());}
        }
}
回复 使用道具 举报
焦晨光 发表于 2012-11-1 22:19
楼主的源代码很乱 而且有很多错误 怎么会有输出结果
错误一:Employees[] ee =new Employees[3]; Employees ...

又出新问题了。。帮忙看下。。╮(╯▽╰)╭。。菜鸟伤不起啊。
回复 使用道具 举报
我的天,这代码写的逆天了
回复 使用道具 举报
哥给你写好了,你的代码缺好多啊,而且好多逻辑错五,你写的时候有没有认真思考啊?
package com.lsh.error;

public class Employee {

        private String name;

        private static int id;

        public Employee(String name, int id) {
                this.name = name;
                this.id = id;
        }

        public static void setId() {
                id++;
        }

        public String getName() {
                return name;
        }

        public void setName(String name) {
                this.name = name;
        }
        public int getId(){
                return id;
        }

        public static void main(String args[]) {
                Employee[] ee = new Employee[3];
                ee[0] = new Employee("张三", 1000);
                ee[1] = new Employee("李四", 2000);
                ee[2] = new Employee("王五", 1800);
                for (int i = 0; i < ee.length; i++) {
                        setId();
                        System.out.println("名字" + ee[i].getName() + " ID=" + ee[i].getId());
                }
        }
}
回复 使用道具 举报
哈哈、、终于看到技术分了。。感动。。加油   动力十足啊
回复 使用道具 举报
林志进 发表于 2012-11-1 22:51
完整代码,运行试下吧
class Employees {
        private String name;

嗯 我试了  可以运行  我还需要多看看分析分析啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马