[英]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/case
时final
成为一种良好的做法。 不幸的是,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.