繁体   English   中英

切换语句而不是if语句

[英]Switch Statement instead of if statements

我用switch语句创建了一个类,该类根据用户选择的边数打印出多边形的名称。 我无法弄清楚的问题是当边小于3且大于12时如何执行此操作。我本来希望使用if语句,但我不能对此部分使用。 由于我可以使用case:对于超过12的每个数字,例如case 13:,case 14:等。我该怎么做?

import java.util.Scanner;
public class Lab13 {
    public static void main(String[] args) {
        int sides = 0;
        Scanner scan = new Scanner(System. in );
        System.out.println("Please enter the number of sides of your Polygon");
        sides = scan.nextInt();
        String polygonname = "";
        switch (sides) {
        case 3:
            polygonname = polygonname + "triangle";
            break;
        case 4:
            polygonname = polygonname + "square";
            break;
        case 5:
            polygonname = polygonname + "pentagon";
            break;
        case 6:
            polygonname = polygonname + "hexagon";
            break;
        case 7:
            polygonname = polygonname + "heptagon";
            break;
        case 8:
            polygonname = polygonname + "octagon";
            break;
        case 9:
            polygonname = polygonname + "nonagon";
            break;
        case 10:
            polygonname = polygonname + "decagon";
            break;
        case 12:
            polygonname = polygonname + "dodecagon";
            break;
        }
        System.out.print("A polygon with " + sides + " sides is called a " + polygonname + ".");
    }
}

使用default:switch的末尾,它将处理所有其他情况,就像if / else if / else if语句中的最后else if / else if / else if 像这样写:

switch(sides) {

case 3:
polygonname=polygonname+"triangle";
break;

// ...

default:
polygonname=polygonname+"unknown";
break;

}

您应该接受奥斯卡的答案。 我只是添加我的观点,以便在进行switch/casefinal成为一种良好的做法。 不幸的是,Java的Switch语句不是基于表达式的,也不是穷举的。 您可以通过使用final变量来解决此问题,如果不处理问题,编译器就会发疯。

    final String polygonname;

    switch (sides) {
    case 3:
        polygonname = "triangle";
        break;
    case 4:
        polygonname = "square";
        break;
    // Other cases....
    case 10:
        polygonname = "decagon";
        break;
    case 12:
        polygonname = "dodecagon";
        break;
    default:
        polygonname = "n-gon";

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM