我做了几乎所有事情来解决烦恼的问题" Long无法解除引用",但任何事情都有效。因此,任何人都可以,请帮帮我?问题是当我检查程序是否在if(System.currentTimeMillis().longValue()==finish)
中超时时,比较不起作用。
public void play()
{
long begin = System.currentTimeMillis();
long finish = begin + 10*1000;
while (found<3 && System.currentTimeMillis() < finish) {
Command command = parser.getCommand();
processCommand(command);
}
if(System.currentTimeMillis().longValue()==finish){
if(found==1){System.out.println("Time is out. You found "+found+" item.");}
else if(found>1 && found<3){System.out.println("Time is out. You found "+found+" items.");}}
else{
if(found==1){System.out.println("Thank you for playing. You found "+found+" item.");}
else if(found>1 && found<3){System.out.println("Thank you for playing. You found "+found+" items.");}
else{System.out.println("Thank you for playing. Good bye.");}
}
}
答案 0 :(得分:3)
System.currentTimeMillis()
返回原始long
而非对象Long
。
因此,您无法调用longValue()
方法或其上的任何方法,因为原语不能成为方法调用的对象。
此外,调用longValue()
是没用的,因为System.currentTimeMillis()已经返回一个long值。
这样更好:
if(System.currentTimeMillis()==finish){
但实际上这种情况:if(System.currentTimeMillis()==finish)
即使true
声明中有System.currentTimeMillis() == finish
,也不能while
:
while (found<3 && System.currentTimeMillis() < finish) {
Command command = parser.getCommand();
processCommand(command);
}
因为在while语句结束和条件评估之间:
if(System.currentTimeMillis() == finish)
,时间在流逝。
所以你应该使用:
if(System.currentTimeMillis() >= finish){