首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中的Setter和Setter

Java中的Setter和Setter
EN

Stack Overflow用户
提问于 2015-05-26 07:02:38
回答 5查看 236关注 0票数 0

当我运行这个程序时,它会返回:

00:00:00 00:00:00 00:00:00 00:00:00

我做错了什么,我如何才能让它返回我打算返回的数字?

这是我主课的代码。

代码语言:javascript
复制
public static void main(String[] args) {
    tuna tunaObject1 = new tuna();
    tuna tunaObject2 = new tuna(5);
    tuna tunaObject3 = new tuna(5, 13);
    tuna tunaObject4 = new tuna(5, 13, 43);

    System.out.println(tunaObject1.toMilitary());
    System.out.println(tunaObject2.toMilitary());
    System.out.println(tunaObject3.toMilitary());
    System.out.println(tunaObject4.toMilitary());
}

}    

这是我在课堂外的主要代码之一。

代码语言:javascript
复制
public class tuna {
    private int hour;
    private int minute;
    private int second;

public tuna() {
    this(0, 0, 0);
}

public tuna(int h) {
    this(h, 0, 0);
}

public tuna(int h, int m) {
    this(h, m, 0);
}

public tuna(int h, int m, int s) {
    setTime(h, m, s);
}

public void setTime(int h, int m, int s) {
    setHour(h);
    setMinute(m);
    setSecond(s);
}

public void setHour(int h) {
    hour = ((hour >= 0 && hour < 24) ? hour:0);
}

public void setMinute(int m) {
    minute = ((minute >= 0 && minute < 60) ? minute:0);
}

public void setSecond(int s) {
    second = ((second >= 0 && second < 60) ? second:0);
}

public int getHour() {
    return hour;
}

public int getMinute() {
    return minute;
}

public int getSecond() {
    return second;
}

public String toMilitary() {
    return String.format("%02d:%02d:%02d", getHour(), getMinute(),  getSecond());
}

}
EN

回答 5

Stack Overflow用户

发布于 2015-05-26 07:05:07

代码语言:javascript
复制
public void setHour(int h) {
    hour = ((hour >= 0 && hour < 24) ? hour:0);
}

应该是

代码语言:javascript
复制
public void setHour(int h) {
    hour = ((h >= 0 && h < 24) ? h:0);
}

其他策划人也是如此

票数 3
EN

Stack Overflow用户

发布于 2015-05-26 07:05:31

例如,查看您的setHour方法:

代码语言:javascript
复制
hour = ((hour >= 0 && hour < 24) ? hour:0);

注意,类成员有默认值,因为hour是一个int,所以它获得0作为默认值(JLS 4.12.5.变量初值)。因此,您的方法相当于:

代码语言:javascript
复制
hour = ((0 >= 0 && 0 < 24) ? 0 : 0);

其他方法也是如此。

补充说明:

  • 调试代码-调试器将帮助您快速发现错误的原因。
  • 遵循Java命名约定并将类重命名为Tuna

在我描述了这个问题之后,很容易解决它。使用h而不是hour,我相信您可以自己处理。

票数 3
EN

Stack Overflow用户

发布于 2015-05-26 07:06:42

改变这个

代码语言:javascript
复制
public void setHour(int h) {
    hour = ((hour >= 0 && hour < 24) ? hour:0);
}

应该是

代码语言:javascript
复制
public void setHour(int h) {
    hour = ((h >= 0 && h < 24) ? h:0);
}

同样,对于其他人,你也必须改变。问题是你错误地分配了变量。请看@Maroun Maroun的答案。他已经很清楚地告诉你为什么不起作用了。编写代码时请遵循Java约定。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30451643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档