Java에서 각 케이스에 둘 이상의 값이 포함 된 스위치 문을 작성할 수 있습니까? 예를 들어 (분명히 다음 코드는 작동하지 않습니다) :
switch (num) {
case 1 .. 5:
System.out.println("testing case 1 to 5");
break;
case 6 .. 10:
System.out.println("testing case 6 to 10");
break;
}
Objective C에서 이것이 가능하다고 생각하는데, Java에도 비슷한 것이 있습니까? 아니면 대신 if
, else if
문을 사용해야 합니까?
답변
Java에는 그런 종류의 것이 없습니다. 다음을 수행하지 않는 이유는 무엇입니까?
public static boolean isBetween(int x, int lower, int upper) {
return lower <= x && x <= upper;
}
if (isBetween(num, 1, 5)) {
System.out.println("testing case 1 to 5");
} else if (isBetween(num, 6, 10)) {
System.out.println("testing case 6 to 10");
}
답변
switch
명령문을 사용 하여 이러한 종류의 동작에 가장 가까운 것은
switch (num) {
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("1 through 5");
break;
case 6:
case 7:
case 8:
case 9:
case 10:
System.out.println("6 through 10");
break;
}
사용 if
진술.
답변
다른 대안은 다음과 같이 나누어 수학 연산을 사용하는 것입니다.
switch ((int) num/10) {
case 1:
System.out.println("10-19");
break;
case 2:
System.out.println("20-29");
break;
case 3:
System.out.println("30-39");
break;
case 4:
System.out.println("40-49");
break;
default:
break;
}
그러나 보시다시피 범위가 각 경우에 고정 된 경우에만 사용할 수 있습니다.
답변
Java에서는 그렇게 할 수 없다고 생각합니다. 가장 좋은 방법은 범위의 마지막 경우에 코드를 넣는 것입니다.
switch (num) {
case 1: case 2: case 3: case 4: case 5:
System.Out.Println("testing case 1 to 5");
break;
case 6: case 7: case 8: case 9: case 10:
System.Out.Println("testing case 6 to 10");
break;
default:
//
}
답변
case 1: case 2: case 3: case 4: case 5:
System.out.println("testing case 1 to 5");
break;
case 6: case 7: case 8: case 9: case 10:
System.out.println("testing case 6 to 10");
break;
default:
System.out.println("default");
답변
나는이 게시물이 오래되었다는 것을 알고 있지만이 답변은 인정받을 가치가 있다고 생각합니다. switch 문을 피할 필요가 없습니다. 이것은 Java에서 수행 할 수 있지만 case가 아닌 switch 문을 통해 수행 할 수 있습니다. 삼항 연산자를 사용합니다.
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = Integer.parseInt(sc.nextLine());
switch ((1 <= num && num <= 5 ) ? 0 :
(6 <= num && num <= 10) ? 1 : 2) {
case 0:
System.out.println("I'm between one and five inclusive.");
break;
case 1:
System.out.println("I'm between 6 and 10 inclusive.");
break;
case 2:
System.out.println("I'm not between one and five or 6 and 10 inclusive.");
break;
}
}
}
답변
또는 의도 한대로 솔로 케이스를 사용하고 기본 케이스를 사용하여 범위 지침을 다음과 같이 지정할 수 있습니다.
switch(n) {
case 1 : System.out.println("case 1"); break;
case 4 : System.out.println("case 4"); break;
case 99 : System.out.println("case 99"); break;
default :
if (n >= 10 && n <= 15)
System.out.println("10-15 range");
else if (n >= 100 && n <= 200)
System.out.println("100-200 range");
else
System.out.println("Your default case");
break;
}