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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© run_wind 中级黑马   /  2014-10-16 22:21  /  1368 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 run_wind 于 2014-10-16 22:49 编辑

  1. <P>class person
  2. {
  3.         String name;
  4.         int age;
  5.         void talk()
  6.         {
  7.         System.out.println(name,age);
  8.         }
  9. }
  10. public class Test
  11. {
  12.    public static void main(String[] args)
  13.         {
  14.                 person p=new person();
  15.                 p.name="zhangsan";
  16.                 p.age=6;
  17.                 p.talk();
  18.         }
  19. }
  20. </P>
  21. <P>//。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。</P>
  22. <P> </P>
  23. <P>class person
  24. {
  25. private String name;
  26. private int age;
  27. void talk()
  28. {
  29. System.out.println(name,age);
  30. }
  31. public void setName(String str)
  32. {
  33. name=str;
  34. }
  35. public int setAge(int a)
  36. {
  37. if(a>0&&a<130)
  38. age=a;
  39. }
  40. public String getName()
  41. {
  42. return name;
  43. }
  44. public int getAge()
  45. {
  46. return age;
  47. }
  48. }

  49. class TestDemo
  50. {
  51. public static void main(String[] args)
  52. {
  53. person p=new person();
  54. p.setName(zhangsan);
  55. p.setAge(6);
  56. p.talk();
  57. }
  58. }



  59. </P>
复制代码


这是两个程序,一个毛病,还有第二个程序,set get不太明白,尤其是get的意义

评分

参与人数 1黑马币 +1 收起 理由
杨佳名 + 1 细节决定成败

查看全部评分

5 个回复

倒序浏览
System.out.println(name,age);,这里name后面连接符号不要用逗号,要用+
public class Test,要么去掉前面的public,要么被public修饰的类名要和你保存的文件名一致,比如你保存为Test.java
回复 使用道具 举报 1 0
56行p.setName(zhangsan); 应该为p.setName("zhangsan"); 因为你定义setName的参数是String类型的
回复 使用道具 举报 1 0
不是用eclipse或者MyEclipse来写的么?用EditPlus写没自动报错功能,建议你找不错错误在那里的时候,把代码扔到Eclipse或者MyEclipse里面去看看呗,在里面还看不出来就打个断点来调试。。。
回复 使用道具 举报
第一个例子
第8行,输出语句的()号内,输出的变量要用 + 号相连接,你用的是的是逗号,肯定不对啦!
第11行, class前不用写public,除非你要生成的class名称和你的 .java文件名一样,下需要写public,显然你你不属于后者。

首先,建议你多敲代码,一定要跟着视频敲,敲多了,这种问题就很难在出现了

第二个例子
这是一个很典型的例子,就是构建一个person 的类,初始化其属性,并放便赋值和调用。其中用到了private ,set(),get()等方法.
首先,还是纠正你几个错误的地方
第30行,还是一样的问题 输出语句的()号内,要用+号作为连接符。
如果你想让名字和年龄之间出现逗号你应该这么写输出语句
System.out.println(name+","+age);
第11行, class前不用写public,这个错误不应该犯。
第36行,
  1. public int setAge(int a)
  2. {
  3. if(a>0&&a<130)
  4. age=a;
  5. }
复制代码

这个的返回值类型应该设置为void吧,因为你是要setAge是要传值进去,不需要返回值,所以用void就行。
这句话还有个问题,就是当如果输入的年龄值不再你判断的范围内,就回出问题,java严谨,所以考虑到0和130以外的值输入进来。
第56行,这个地方录入名字,需要加""双引号,因为你在第32行处定义了输入内容为String,所以录入内容要为字符串。需要在名字两边加""。


set 和 get
set设置,就是理解为赋值的意思。setAge,就是给创建的元素赋值。
get获取,就是从person中获得存储的数据。
正因为将name和age赋予了private的权限。所以外部是无法直接或取这两个值得,需要拐个弯,因为get属于这个类,所以他可以抓取有private权限的name 和age。而getName和getAge的权限都是public,所以其他类和对象,可以调用这个get方法。
set同样的意思,因为private权限,外部类因为权限问题,无法为其赋值,就需要有public权限的set为其赋值。

多写写代码,往后听课,后面你就会理解的。一开始我也不是很懂为什么,看到后边就明白了。
希望对你有帮助。

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报 1 0
talk()方法中的输出语句 里的name和age 不能用逗号分隔得,只能
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马