gpt4 book ai didi

java - 测试仪的类逻辑错误显示以前的时间而不是新的

转载 作者:行者123 更新时间:2023-12-01 17:21:08 34 4
gpt4 key购买 nike

刚刚加入 StackOverflow,并希望在这个令人惊叹的社区中继续成长:)

我有一个为学习而编写的代码,我不明白为什么类“setHour”和“setMinute”可以正常工作。

我一遍又一遍地修改代码,但仍然没有解决问题。我还有一个使用“setHour”和“setMinute”的测试代码,但仍然没有得到它。

我必须提到,这两个类中使用的变量是必需的,并且还需要私有(private)“_minFromMidnight”,但我可以添加公共(public)变量。

这是代码:

public class Time2
{
// instance variables - replace the example below with your own
private int _minFromMidnight;
int _num;
int _h;
int _m;
final int minInDay = 1440; //Total minutes per day

/**
* Constructor for objects of class Time2
*/
public Time2(int h, int m)
{ _h = h;
_m = m;

if (_h > 23 || _h < 0)
{
_h = 0;
}
else _minFromMidnight = _h;

if (_m > 59 || _m < 0)
{
_m = 0;
}
else _minFromMidnight = _m;

_minFromMidnight = (h*60) +m;
}

public Time2(Time2 other)
{
_minFromMidnight = other._minFromMidnight;
}
public void setHour(int num)
{
if ((num >= 0) && ( num < 24))
_h = num;
else num = 0;
}

public void setMinute(int num)
{

if ((num >= 0) && (num < 59))
_m = num;
else num = 0;

}
public int getHour()
{
return _h;
}

public int getMinute()
{
return _m;
}
}

我的测试仪如下:

    Time2 t1 = new Time2(17, 45);
System.out.println("\tt1=" + t1);
System.out.println("\n2. Testing accessors and mutators:");
t1.setHour(20);
t1.setMinute(10);
System.out.println("\tt1=" + t1);
System.out.println("\tHour of t1=" + t1.getHour());
System.out.println("\tMinute of t1=" + t1.getMinute());

输出显示:

2. Testing accessors and mutators:
t1=17:45
Hour of t1=20
Minute of t1=10

我已经处理这个案子超过 3 天了,但我仍然不知道问题出在哪里。

抱歉,如果这看起来很困惑/愚蠢。我是新来的...谢谢

最佳答案

找到了我自己的答案:)问题是变量没有正确表述,因此逻辑很糟糕。

我只是简单地重新调整了几乎所有的代码:

 public Time2(int h, int m)
{
int hours;
int minutes;

if (h > 23 || h < 0)
{
hours = 0;
}
else hours = h;

if (m > 59 || m < 0)
{
minutes = 0;
}
else minutes = m;

_minFromMidnight = (hours*60) + minutes;
}
public int getHour()
{
return _minFromMidnight /60;
}

public int getMinute()
{
return _minFromMidnight %60 ;
}

public void setHour(int num)
{
if (num < 0 || num > 23)
return;
this._minFromMidnight = getMinute() + (num * 60);
}

public void setMinute(int num)
{

if (num < 0 || num > 59)
return;
this._minFromMidnight = (getHour() * 60) + num;

}

使用相同的测试仪和中提琴!

2. Testing accessors and mutators:
t1=20:10
Hour of t1=20
Minute of t1=10

抱歉让你头疼了,我只需要重新运行它就可以了:)

谢谢!

关于java - 测试仪的类逻辑错误显示以前的时间而不是新的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61287366/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com