我创建了这个if-else-if语句,并且想知道我是否能够缩短它以便它不占用太多空间.如果有人知道如何做到这一点,请帮忙!
if (seatNum <= 20) System.out.println("Row 1");
else if (seatNum > 20 && seatNum <= 40) System.out.println("Row 2");
else if (seatNum > 40 && seatNum <= 60) System.out.println("Row 3");
else if (seatNum > 60 && seatNum <= 80) System.out.println("Row 4");
else if (seatNum > 80 && seatNum <= 100) System.out.println("Row 5");
else if (seatNum > 100 && seatNum <= 120) System.out.println("Row 6");
else if (seatNum > 120 && seatNum <= 140) System.out.println("Row 7");
else if (seatNum > 140 && seatNum <= 160) System.out.println("Row 8");
else if (seatNum > 160 && seatNum <= 180) System.out.println("Row 9");
else if (seatNum > 180 && seatNum <= 201) System.out.println("Row 10");
else if (seatNum > 201 && seatNum <= 216) System.out.println("Row 11");
else if (seatNum > 216 && seatNum <= 231) System.out.println("Row 12");
else if (seatNum > 231 && seatNum <= 246) System.out.println("Row 13");
else if (seatNum > 246 && seatNum <= 261) System.out.println("Row 14");
else if (seatNum > 261 && seatNum <= 276) System.out.println("Row 15");
else if (seatNum > 276 && seatNum <= 291) System.out.println("Row 16");
else if (seatNum > 291 && seatNum <= 306) System.out.println("Row 17");
else if (seatNum > 306 && seatNum <= 321) System.out.println("Row 18");
else if (seatNum > 321 && seatNum <= 336) System.out.println("Row 19");
else if (seatNum > 336 && seatNum <= 351) System.out.println("Row 20");
Run Code Online (Sandbox Code Playgroud)
编辑:包括座位201.抱歉所有的混乱!
我们可以使用intJava 中的-divisions总是向零舍入,这意味着5 / 2 == 2和-5 /2 == -2.
因为seatNum <= 0,行总是1.只要seatNum <= 200,排是((seatNum - 1) / 20) + 1.如果是> 201,我们可以简单地采取((seatNum - 202) / 15) + 11.我们减去202因为数字是由以下因素引起的2:216仍在行中11,217在行中12.同样适用于231和232.通过这个计算,未定义的座位201将成排11,但忽略此输入或抛出Exception相反没什么大不了的.
// if (seatNum != 201) { // optional, to neglect seat 201
System.out.print("Row: "); // yes, I am that lazy...
if (seatNum <= 0) {
System.out.println(1);
} else if ((seatNum <= 200) /* && (seatNum > 0) */) {
System.out.println(((seatNum - 1)/ 20) + 1);
} else /* if (seatNum > 200) */ {
System.out.println(((seatNum - 202) / 15) + 11);
}
// }
Run Code Online (Sandbox Code Playgroud)
如果行变得更复杂/不规则,我可能会部署Dale解决方案的略微变化.这似乎具有可读性和可扩展性.