Java 为什么我的开关坏了?
我正在用System.currentTimemillis做一个10秒的计时器。在一个每秒刷新10次的方法中,我有以下代码: Start是活动的开始时间,在onCreate方法中会询问该时间。 我知道Integer.parseIntLong.ToString可以工作,因为当我执行System.out.printlnInteger.parseIntLong.ToString时;它正确地返回了我的时间 所以,我的问题是,我不知道为什么开关不能正常工作Java 为什么我的开关坏了?,java,switch-statement,Java,Switch Statement,我正在用System.currentTimemillis做一个10秒的计时器。在一个每秒刷新10次的方法中,我有以下代码: Start是活动的开始时间,在onCreate方法中会询问该时间。 我知道Integer.parseIntLong.ToString可以工作,因为当我执行System.out.printlnInteger.parseIntLong.ToString时;它正确地返回了我的时间 所以,我的问题是,我不知道为什么开关不能正常工作 long y=System.currentTime
long y=System.currentTimeMillis()-start;
switch (Integer.parseInt(Long.toString(y))) {
case 1000:
time.setText("3");
time.setAnimation(anim);
break;
case 2000:
time.setText("2");
time.setAnimation(anim);
break;
case 3000:
time.setText("1");
time.setAnimation(anim);
break;
case 4000:
time.setText("GOOO!");
time.setAnimation(anim);
count.setVisibility(View.VISIBLE);
cuenta = 0;
count.setText("0");
break;
case 5000:
time.setText("1");
time.setAnimation(anim);
break;
case 6000:
time.setText("2");
time.setAnimation(anim);
break;
case 7000:
time.setText("3");
time.setAnimation(anim);
break;
case 8000:
time.setText("4");
time.setAnimation(anim);
break;
case 9000:
time.setText("5");
time.setAnimation(anim);
break;
case 10000:
time.setText("Time!");
time.setAnimation(anim);
count.setVisibility(View.INVISIBLE);
break;
}
因为它不会给出这些数字100020003000 如果数字给出的或多或少,则案例将失败 编辑: 试试这个
public static boolean isBetween(int x, int lower, int upper) {
return lower <= x && x <= upper;
}
if (isBetween(num, 0, 1000)) {
// do something
} else if (isBetween(num, 1001, 2000)) {
// do domething
}
...
…您的代码的问题是您检查了一个特殊的时间。我认为您可能需要使用如下代码:
Integer val = Integer.parseInt(Long.toString(y));
if(val<1000) {
time.setText("3");
time.setAnimation(anim);
} else if(val<2000) {
time.setText("2");
time.setAnimation(anim);
} else if(val<3000) {
time.setText("1");
time.setAnimation(anim);
} else if(val<4000) {
time.setText("GOOO!");
time.setAnimation(anim);
count.setVisibility(View.VISIBLE);
cuenta = 0;
count.setText("0");
} else /* and so on */
基本上,如果不检查下一个,您只需检查您的计算机是否在一个特殊间隔内。我如何在一个机箱内设置数字间隔?检查间隔,而不是精确的数字。嗯,好吧,也许这会比swich好,谢谢。您可能想将检查从ifval>1000改为ifval@SimonSays啊,我几乎每次都把它们混在一起。固定的