我的老师给了我这个任务。她给了我们一个ClockTester.java主程序,我们必须创建一个公共类,声明在Clock Tester中使用的对象和方法。下面是Tester,下面是我的clock.java代码。我无法按照自己的意愿将其格式化为00:00:00。我也把她的说明指南。
如果有人可以请,请帮帮我。 我尝试运行程序时也遇到堆栈溢出错误。
<!DOCTYPE html>
<html>
<head>
<script data-require="angular.js@1.4.7" data-semver="1.4.7" src="https://code.angularjs.org/1.4.7/angular.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/angular-filter/0.4.7/angular-filter.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body ng-app="DemoApp" ng-controller="akuaController">
<ul class="dropdown-menu" id="search-dropdown-menu">
<li>
<a href="javascript:void(0);" data-ng-click="searchFilter('jurusan', '-')">
-
</a>
</li>
<li>
<a href="javascript:void(0);" data-ng-click="searchFilter('jurusan', 'kd_jurusan')">
Kode Jurusan
</a>
</li>
<li>
<a href="javascript:void(0);" data-ng-click="searchFilter('jurusan', 'nama_jurusan')">
Nama Jurusan
</a>
</li>
</ul>
<input type="text"
class="form-control input-sm"
data-ng-model="search"
placeholder="Cari data . . ."
autofocus />
</body>
</html>
答案 0 :(得分:1)
Clock
的{{1}}方法中有一个递归调用。这就是您遇到堆栈溢出错误的原因。
equals
将其更改为更合适的逻辑,以检查public boolean equals (Clock c)
{
boolean equiv = c.equals(c); // this keeps calling itself
return equiv;
}
对象的相等性。
例如,
Clock
而且,public boolean equals (Clock c)
{
boolean equiv = c!=null && this.hours==c.hours && this.minutes==c.minutes && this.seconds==c.seconds;
return equiv;
}
方法非常混乱。这也需要重写。像这样:
toString()
答案 1 :(得分:0)
toString
Clock
方法的代码似乎已被破坏
if (this.equals (this.hours ....
只是没有意义。
其次,值为00
的int与0
所以你的代码所做的就是返回
String.format ("%02d:%02d:%02d", hours, minutes, seconds);
答案 2 :(得分:0)
您的equals
方法是递归的,并将c
与自身进行比较;相反,请将c
与this
的字段进行比较。此外,您应该使用@Override
注释。它会告诉你Object.equals
需要Object
。像
@Override
public boolean equals(Object o) {
if (o instanceof Clock) { // <-- Is it a Clock?
Clock c = Clock.class.cast(o); // <-- Use o as a Clock
return c.isPM() == this.isPM() //
&& c.getHours() == this.getHours() //
&& c.getMinutes() == this.getMinutes() //
&& c.getSeconds() == this.getSeconds();
}
return false;
}
然后通过创建一个简单的辅助方法来填充toString
(s)两位数,可以大大简化您的int
方法。像,
private static String get2Digits(int i) {
if (i < 10) {
return "0" + i;
}
return String.valueOf(i);
}
然后使用它来更正toString
(并使用@Override
,即使您知道 toString
也不接受任何参数。您可以使用StringBuilder
来执行连接。
@Override
public String toString() {
return new StringBuilder(8) //
.append(get2Digits(hours)) //
.append(':').append(get2Digits(minutes)) //
.append(':').append(get2Digits(seconds)) //
.toString();
}