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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 刘林虎 于 2013-4-4 17:35 编辑

public class aa {
public static void main(String[] args) {
Date2[] days = new Date2[5];
days[0] = new Date2(2013,2,11);
days[1] = new Date2(2012,3,11);
days[2] = new Date2(2012,2,11);
days[3] = new Date2(2013,6,11);
days[4] = new Date2(2013,2,12);

for(int i =0; i <days.length; i++) {
System.out.println(days.toString()+ " ");
} }
}
class Date2 {
int year;
int mouth;
int day;
Date2(int yy, int mm, int dd) {
yy = year;
mm = mouth;
dd = day;
}
public String toString() {
return "year-mouth-day : "+year + "-"+mouth+"-"+day;
}
}

为什么 打印出来都是year-day-mouth: 0-0-0

点评

希望你可以将代码写入代码框,这样可以让大家更好地帮你解答问题,谢谢  发表于 2013-4-3 21:56

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

13 个回复

倒序浏览
帅哥 你们下次能不能把代码打在加载代码的选项里

就是<>这样一个符号里就在表情的前面  

你们这样让我们答题的很痛苦。。。。。
回复 使用道具 举报
本帖最后由 李尧 于 2013-4-3 13:15 编辑

卤煮,你构造函数写错了.改成下面这样就好了
  1. Date2(int yy, int mm, int dd) {
  2. year=yy;
  3. mouth=mm;
  4. day=dd;
  5. }
复制代码
另外,直接打印输出days即可.不需要days.toString().
===========这是华丽的分割线==============
我特么真心寒,把代码整个复制一遍版主就给分,我把有错的地方给挑出来就没分...

点评

看到你说特别心寒,是我这个版主没做好,所以应该是我道歉的;大家都是为了共同进步嘛,还是希望你可以多多帮助大家解答问题,谢谢  发表于 2013-4-4 14:30
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 可见,不仅做人讲技巧,这回答同样啊!  发表于 2013-4-3 13:55

评分

参与人数 2技术分 +2 黑马币 +40 收起 理由
黄玉昆 + 2
陈圳 + 40 赞一个!我来打赏!

查看全部评分

回复 使用道具 举报
  1. public class java0403d4
  2. {
  3.         public static void main(String[] args)
  4.                 {
  5.                         Date2[] days = new Date2[5];
  6.                         days[0] = new Date2(2013,2,11);
  7.                         days[1] = new Date2(2012,3,11);
  8.                         days[2] = new Date2(2012,2,11);
  9.                         days[3] = new Date2(2013,6,11);
  10.                         days[4] = new Date2(2013,2,12);
  11.                         for(int i =0; i <days.length; i++)
  12.                                 {
  13.                                 System.out.println(days[i].toString()+ " ");
  14.                                 }
  15.                 }
  16. }
  17. class Date2
  18. {
  19.         int year;//
  20. 他是空
  21.         int mouth;//
  22. 他是空
  23.         int day;//
  24. 他是空
  25.         Date2(int yy, int mm, int dd)//他们三个也是是空
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 _王涛 于 2013-4-3 12:50 编辑

你在赋值时有错误,正确代码如下:
  1. public class AA {

  2. public static void main(String[] args) {
  3. Date2[] days = new Date2[5];
  4. days[0] = new Date2(2013,2,11);
  5. days[1] = new Date2(2012,3,11);
  6. days[2] = new Date2(2012,2,11);
  7. days[3] = new Date2(2013,6,11);
  8. days[4] = new Date2(2013,2,12);

  9. for(int i =0; i <days.length; i++) {
  10. System.out.println(days[i].toString()+ " ");
  11. } }
  12. }
  13. class Date2 {
  14. int year;
  15. int mouth;
  16. int day;
  17. Date2(int yy, int mm, int dd) {
  18. year=yy;
  19. mouth=mm;
  20. day=dd;
  21. }
  22. public String toString() {
  23. return "year-mouth-day : "+year + "-"+mouth+"-"+day;
  24. }

  25. }

复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
Date2类的含参构造函数写错了应该为:
Date2(int yy, int mm, int dd) {
year = yy;
mouth = mm;
day = dd;
}
因为在Date2类中成员变量定义的为int型,没有初始化,系统默认为0.而"yy = year;"是将year的值复制给yy,所以最后你打印的还是那个没被初始化的变量。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 新人鼓励

查看全部评分

回复 使用道具 举报
你传参,传错误了。改成这样就行了。
  1. class Date2 {
  2.         int year;
  3.         int mouth;
  4.         int day;
  5.         Date2(int year, int mouth, int day) {
  6.                         this.year = year;
  7.                         this.mouth = mouth;
  8.                         this.day = day;
  9.                         }
  10. public String toString() {
  11.                 return "year-mouth-day : "+year + "-"+mouth+"-"+day;
  12.         }
  13. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 鼓励鼓励

查看全部评分

回复 使用道具 举报
  1. Date2(int yy, int mm, int dd) {
  2. yy = year;
  3. mm = mouth;
  4. dd = day;
  5. }
复制代码
这块代码严重错误啊
回复 使用道具 举报
构造函数写错了,你将形式参数的值改变了,类的实例对象的成员还是初始化时的值,都是0。
使用eclipse直接生产构造函数就行了
        Date2(int yy, int mm, int dd) {
        yy = year;
        mm = mouth;
        dd = day;
        }
回复 使用道具 举报
Date2(int yy, int mm, int dd) {
yy = year;
mm = mouth;
dd = day;
}
一般来说,赋值的时候,是把等号后面的赋值给等号前面的,所以这里有错误。麻烦你下次注意点
回复 使用道具 举报
本帖最后由 黄玉昆 于 2013-4-3 21:59 编辑
李尧 发表于 2013-4-3 12:35
卤煮,你构造函数写错了.改成下面这样就好了另外,直接打印输出days即可.不需要days.toString().
=========== ...

很抱歉没给你加分。首先谢谢你帮助回答问题。如果你真的想要技术分,可以给你,但是我们版主加分也不能没有标准,因为你的技术在一定程度上体现这你的技术高低,所以我觉得你回答这样的问题是绰绰有余的。这位楼主没有将代码写入代码框,我没有提醒,是我的失误,很抱歉。希望能看到你可以用你技术为大家多多解答,谢谢。
我个人愚见:能解答出一道题,我会乐此不疲,即使没有技术分。

点评

其实我是抱着帮助别人顺便帮助自己回顾知识点的目的来发帖的..只是不被承认回答有意义让人很不爽吖.斑竹别往心里去吖,没有责怪你的意思....  发表于 2013-4-4 00:01
回复 使用道具 举报
这里有如何让你快速熟悉论坛发帖和回帖以及结贴的说明,希望对你有帮助。
http://bbs.itheima.com/thread-42978-1-1.html
回复 使用道具 举报
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马