KiK*_*iKo 6 java android infinite-loop while-loop
用这种方法我TextView每秒都在更新.
private void UpdatingTime(final String endTime, final long diffInDays) {
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
Thread.sleep(ONE_SECOND);
mHandler.post(new Runnable() {
@Override
public void run() {
// Updating time every second
long diffInHours = Methodes.diffInHours(endTime, diffInDays);
long diffInMinutes = Methodes.diffInMinutes(endTime, diffInDays, diffInHours);
long diffInSeconds = Methodes.diffInSeconds(endTime, diffInDays, diffInHours, diffInMinutes);
tvTime2.setText(addZeroInFront(diffInHours)
+ ":" + addZeroInFront(diffInMinutes)
+ ":" + addZeroInFront(diffInSeconds));
}
private String addZeroInFront(long diffInHours) {
String s = "" + diffInHours;
if (s.length() == 1) {
String temp = s;
s = "0" + temp;
}
return s;
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}
}).start();
}
}
Run Code Online (Sandbox Code Playgroud)
这种方法很完美.但我得到了这个警告:
'while'语句无法在不抛出异常的情况下完成.
报告for,while或do语句只能通过抛出异常退出.虽然这些陈述可能是正确的,但它们通常是编码错误的症状.
我讨厌警告,我想解决它.我该如何解决这个警告,或者这个无限循环有更好的解决方案......?
Lou*_*CAD 19
您可能正在使用Android Studio或IntelliJ.
如果是这样,您可以在包含无限循环的方法上方添加此内容以禁止警告:
@SuppressWarnings("InfiniteLoopStatement")
Run Code Online (Sandbox Code Playgroud)
或者在声明上方添加这个"神奇"评论:
//noinspection InfiniteLoopStatement
Run Code Online (Sandbox Code Playgroud)
这将告诉IDE这没关系.
更一般地说,当您收到误报警告时,请Alt+Enter执行以下屏幕截图中显示的操作(仅当您的课程充满误报时选择课程,同样的警告)
您可能在使用 IntelliJ IDEA 时收到此警告,对吗?
正如其他人已经提到的,这个警告通常可以被忽略。
如果您想禁用它,请打开“设置”并转到“编辑器”>“检查”并搜索Infinite loop statement. 只需取消选中该框即可完成。
一般来说,您只需将文本光标放在要禁用的警告上,然后按Alt + Enter,然后单击检查信息字段并单击“禁用检查”。