黑马程序员技术交流社区

标题: 类定义 总是出错求解 [打印本页]

作者: onlyonewf    时间: 2012-7-14 12:26
标题: 类定义 总是出错求解
public class Student {
      private String Id;
      private String Name;
      private String Sex;
      public void setSex(String Sex){
              this.Sex=Sex;}
      public void Name(String Name){
              this.Name=Name;}
      public void id(String Id){
              this.Id=Id;}
      public String getSex(){
              return Sex;}
      public String getName(){
              return Name;}
      public String getId(){
              return Id;}
      public static void main(String[] args){
              Student stu1=new Student();
              stu1.setName("王飞");
              stu1.setId("0323");
              stu1.setSex("男");
              System.out.println("信息");
              System.out.println("stu1.getId");
              System.out.println("stu1.getName");
              System.out.println("stu1.getSEX");            
      }
      
      }

作者: onlyonewf    时间: 2012-7-14 12:27
求高手来纠错!
作者: 葛奎    时间: 2012-7-14 12:35
打印语句写错了  不要带双引号  带上双引号就会直接打印双引号里面的内容了


作者: 葛奎    时间: 2012-7-14 12:36
Sysetem.out.println(stu1.getId());
Sysetem.out.println(stu1.getName());
......
这么写
作者: 许瑞航老师    时间: 2012-7-14 12:39
public class abc {
    private String Id;
    private String Name;
    private String Sex;
    public void setSex(String Sex){
            this.Sex=Sex;}
    public void Name(String Name){
            this.Name=Name;}
    public void id(String Id){
            this.Id=Id;}
    public String getSex(){
            return Sex;}
    public String getName(){
            return Name;}
    public String getId(){
            return Id;}
    public static void main(String[] args){
            abc stu1=new abc();
            stu1.Name("王飞");                            //看好你上面定义的是什么
            stu1.id("0323");
            stu1.setSex("男");
            System.out.println("信息");
            System.out.println(stu1.Id);                 //这里怎么能加双引号呢。。
            System.out.println(stu1.Name);
            System.out.println(stu1.Sex);            
   }
   
    }
这是正确的代码 我刚测试过。。
作者: 王亚飞    时间: 2012-7-14 12:41
这是set和get方法吧,
  1. public void setSex(String Sex){
  2.               this.Sex=Sex;}
  3.       public void setName(String Name){        //你这里没有用set
  4.               this.Name=Name;}
  5.       public void setid(String Id){                    //你这里没有用set
  6.               this.Id=Id;}
  7.       public String getSex(){
  8.               return Sex;}
复制代码
至于你的错误就是定义sex的时候用了get方法,定义name和id的时候为什么不用set呢?
作者: 许瑞航老师    时间: 2012-7-14 12:43
许瑞航 发表于 2012-7-14 12:39
public class abc {
    private String Id;
    private String Name;

把我的类名 改一下 在拿去运行  其实没什么大问题  就是上面和下面 不一致   还有就是双引号 是你要打印的      像你引用的话 没必要打双引号
作者: 许瑞航老师    时间: 2012-7-14 12:43
许瑞航 发表于 2012-7-14 12:39
public class abc {
    private String Id;
    private String Name;

把我的类名 改一下 在拿去运行  其实没什么大问题  就是上面和下面 不一致   还有就是双引号 是你要打印的      像你引用的话 没必要打双引号
作者: 王亚飞    时间: 2012-7-14 12:43
报错说这个Name和Id没有定义是因为你没有用set,获取的时候用get获取
作者: 耿立刚    时间: 2012-7-14 12:44
注意你的get和set方法是不是写对了,要是没什么把握可以用myeclipse自动生成属性的get和set方法,而且你最后打印的时候加了个双引号所以就把那个当做字符串输出了,应该这样写 “System.out.println(stu1.getId());”话不多说直接代码截图不是全屏所以就把代码紧凑了一点

代码.png (17.02 KB, 下载次数: 21)

代码.png

结果.png (5.37 KB, 下载次数: 18)

结果.png

作者: 杨贺阳    时间: 2012-7-14 12:53
本帖最后由 杨贺阳 于 2012-7-14 13:08 编辑

public class Student {
      private String Id;
      private String Name;
      private String Sex;
      public void setSex(String Sex){
              this.Sex=Sex;}
      public void setName(String Name){
              this.Name=Name;}
      public void setId(String Id){
              this.Id=Id;}
      public String getSex(){
              return Sex;}
      public String getName(){
              return Name;}
      public String getId(){
              return Id;}
      public static void main(String[] args){
              Student stu1=new Student();
              stu1.setName("王飞");
              stu1.setId("0323");
              stu1.setSex("男");
              System.out.println("信息");
              System.out.println(stu1.getId());
              System.out.println(stu1.getName());
              System.out.println(stu1.getSex());            
   }
}

这是我改过的代码,能运行,结果是下面的图片
刚才看的时候还是一个人回复,一下跑出这么多,郁闷,不过你这个问题,连我这个菜鸟都解出来了,
你上边定义的是id name 下边变成setid  setname了,照我的改一下就行了。
还有你那个setsex的大小写。。错误很多啊
斑竹, 俺第一次完整回答技术问题啊。。。有木有加分啊~~

未命名.jpg (3.95 KB, 下载次数: 30)

未命名.jpg

作者: 杨康    时间: 2012-7-14 14:22
本帖最后由 杨康 于 2012-7-14 14:24 编辑

public class Student {
      private String Id;    //定义变量一般用小写字母,加入你定义的是id是身份证的话,id 应该是int类型的,改为 private int id;
      private String Name;    //private String name;
      private String Sex;    //private String sex;
      public void setSex(String Sex){    //public void setSex(String sex){this.sex = sex;}
              this.Sex=Sex;}
      public void Name(String Name){   //定义方法一般设置用setXxx(),与你上一个setSex()方法同样,
              this.Name=Name;}   //public void setName(String name){this.name = name;}
      public void id(String Id){    //public int setId(int id){this.id = id;}
              this.Id=Id;}
      public String getSex(){
              return Sex;}   //return sex;
      public String getName(){
              return Name;}    //return name;
      public String getId(){
              return Id;}    //return id;
      public static void main(String[] args){
              Student stu1=new Student();
              stu1.setName("王飞");
              stu1.setId("0323");     //设置id,id是int类型的,而且不应该加""
              stu1.setSex("男");
              System.out.println("信息");
              System.out.println("stu1.getId");    //同理,不能加"",而且调用方法要带(),改为stu1.getId();
              System.out.println("stu1.getName");    //同上,stu1.getName();
              System.out.println("stu1.getSEX");   //stu1.getSex();         
      }
      
      }

作者: 苑占丽    时间: 2012-7-14 15:09
本帖最后由 苑占丽 于 2012-7-14 15:11 编辑

public class Student {
       private String Id;
       private String Name;
       private String Sex;
       public void setSex(String Sex){
               this.Sex=Sex;}
       public void setName(String Name)这样一改就行了{
               this.Name=Name;}
       public void setId(String Id){
               this.Id=Id;}
       public String getSex(){
               return Sex;}
       public String getName(){
               return Name;}
       public String getId(){
               return Id;}
       public static void main(String[] args){
               Student stu1=new Student();
               stu1.setName("王飞");你就没有定义setName方法呀
               stu1.setId("0323");同上
               stu1.setSex("男");
               System.out.println("信息");
               System.out.println(stu1.getId//Magenta]stu1.getId());
               System.out.println(stu1.getName//stu1.getName());
               System.out.println(stu1.getSEX这个方法名都是错误的呀,同时不能加引号的呀,因为得到的是一个返回值呀//stu1.getSex());            
      }
      
       }

好好看看毕老师讲得面向对象吧。然后你会发现这个问题其实是可以避免的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2