我只想问一下如何用java编写这个例子。
case 1:
if (mark == 1) {
System.out.println("You can't pass test");
}
break;
case 2:
if (mark > 1) {
System.out.println("You can pass test");
}
但是最大分数是5,所以如果有人把6个应用程序假设说" ERROR"。我该如何解决?
答案 0 :(得分:2)
答案 1 :(得分:2)
在某些地方你的情况,如果测试似乎是在检查相同的事情,它会让人感到困惑,因为整个开关声明都没有显示出来。如果switch语句也使用了mark,那么使用case和if语句进行测试似乎是多余的。
如果您正在寻找如何使用开关来测试范围,请参见示例。如果你希望它们具有相同的效果,你可以在一个开关中让案件失败(不添加休息时间):
switch (mark) {
case 1: {
System.out.println("you can't pass test");
break;
}
case 2:
case 3:
case 4:
case 5: {
System.out.println("You can pass test");
break;
}
default: {
System.out.println(mark > 5 ? "too high" : " too low");
break;
}
}
虽然if语句在这里可能会更好用:
if (mark >= 2 && mark <= 5) {
System.out.println("You can pass test");
} else if (mark < 2){
System.out.println("You can't pass test");
} else {
System.out.println("ERROR");
}
答案 2 :(得分:1)
你需要做一个&amp;&amp;在你的if语句中。
if(mark ==1) {
}
和
if(mark > 1 && mark <=5) {
}
这假设最大标记包括五个。
答案 3 :(得分:0)
if (mark >= 0 && mark<= 5) {
if(mark<=1){
System.out.println("You can't pass test");
}else{
System.out.println("You can pass test");
}
}else{
System.out.println("Error");
}
答案 4 :(得分:0)
重构:
void testPass()
{
System.out.println("You can pass test");
}
void testFail()
{
System.out.println("You can't pass test");
}
void testError()
{
//some code to do error processing
}
void someMethod(int marks)
{
//somecode
check_block:
{
if (marks > 5)
{
testError();
break check_block;
}
if(marks > 1)
{
testPass():
break check_block;
}
testFail();
}
//some code
}
尽量避免切换。 希望这有帮助
答案 5 :(得分:0)
考虑使用业务对象而不是底层类型(在本例中为int):
class Mark {
private final int value;
public Mark(int value) {
if (value < 1) {
throw new IllegalArgumentException("Value " + value + " too small");
} else if (value > 5) {
throw new IllegalArgumentException("Value " + value + " too large");
}
this.value = value;
}
public boolean isPassing() {
return value > 1;
}
public int getValue() {
return value;
}
}
在应用程序的主体中
try {
Mark mark = new Mark(value);
System.out.println("You "+(mark.isPassing()?"can":"can't")+" pass test");
} catch (IlleagalArgumentException e) {
System.out.println("Error: " + e.getMessage());
}
真正的优势在于,随着您的应用程序的增长,您可以传递Mark的实例,并且只需要在将int转换为Marks时担心错误情况。