当我尝试编译此代码时,第41-45行给出了一个“无法访问的代码”语句。当我输入几行来处理异常时,会发生同样的事情。我有什么不对劲吗?这是SAMS在24小时内自学Java一书中的修改示例代码。用它作为复习。
import java.util.*;
import java.util.concurrent.TimeUnit;
public class Clock {
public static void main(String[] arguments) {
Calendar now = Calendar.getInstance();
int hour = now.get(Calendar.HOUR_OF_DAY);
int minute = now.get(Calendar.MINUTE);
int month = now.get(Calendar.MONTH) + 1;
int day = now.get(Calendar.DAY_OF_MONTH);
int year = now.get(Calendar.YEAR);
//Display greeting
if (hour < 12){
System.out.println("Good Morning! \n");
}else if (hour < 17){
System.out.println("Good afternoon! \n");
} else {
System.out.println("Good evening! \n");
}
//Time message start
while(1 < 2){
try
{
final String os = System.getProperty("os.name");
if (os.contains("Windows"))
{
Runtime.getRuntime().exec("cls");
}
else
{
Runtime.getRuntime().exec("clear");
}
}
catch (final Exception e)
{
// Handle any exceptions.
}
}
//Errors occur here
try {
TimeUnit.SECONDS.sleep(100);
} catch (InterruptedException e) {
//Handle exception
}
//Errors end here
System.out.println("The time currently is:" + hour + ":" + minute);
System.out.println("Date: " + month + "/" + day + "/" + year);
}
}
答案 0 :(得分:6)
那里的代码无法访问,因为while循环条件1 < 2
始终为true,因此您始终处于while循环中。为避免这种情况,您可以:
while
循环条件更改为可能为false的内容。break
语句,退出它。答案 1 :(得分:2)
while
循环永远不会中断,因为1 < 2
始终为真。因此,永远不会到达while循环之后的部分,因此编译器错误。
答案 2 :(得分:0)
你有一个没有break语句的无限循环。
答案 3 :(得分:0)
由于你的while循环是一个无限循环,所以你的代码永远不会到达你的这个块。
//Errors occur here
try {
TimeUnit.SECONDS.sleep(100);
} catch (InterruptedException e) {
//Handle exception
}
//Errors end here
System.out.println("The time currently is:" + hour + ":" + minute);
System.out.println("Date: " + month + "/" + day + "/" + year);
}
作为您的代码
while(1 < 2){
try
{
final String os = System.getProperty("os.name");
if (os.contains("Windows"))
{
Runtime.getRuntime().exec("cls");
}
else
{
Runtime.getRuntime().exec("clear");
}
}
catch (final Exception e)
{
// Handle any exceptions.
}
} // from here again start from loop staring point and looping this again and again
所以在编译时编译器会警告你第二次try块和rest语句是不可达的。你的程序永远不会执行这个块。这就是它说不可达的原因。
答案 4 :(得分:0)
你有一个无限循环。 1总是小于2.
建议: