java - Large Switch Case(60 个不同的 Cases)——我该如何减少?或完善代码

标签 java eclipse ide switch-statement

所以我有一个开关盒,它接受边长(以 CM 为单位)的输入,并选择机器人轮子旋转多长时间(以 ms 为单位) 用户输入 25 选择案例 25 并将时间设置为 2000ms

但是有 60 种不同的可能情况(两次)我对如何缩小它感到困惑? 如果可能的话

import java.util.ArrayList;
import java.util.Scanner;
import edu.cmu.ri.createlab.terk.robot.finch.Finch;

public class assignment2 {
    static String shape,largestShapeName;
    static int side1,side2,side3;
    static int triangleCount=0,rectangleCount = 0;
    static int area,largestShape = 0;
    static int largestSide1,largestSide2,largestSide3;
    static int angle1,angle2,angle3;
    static boolean possible=false;
    static Scanner shapescanner = new Scanner(System. in);
    static Scanner sidescanner = new Scanner(System. in);
    static Finch myfinch = new Finch();
    static ArrayList<String> arrayShape = new ArrayList<String>();
    public static void main(String args[])
    {

        System.out.println("Please Enter The shape you want to Draw");

        shape = shapescanner.nextLine().toUpperCase();
        while (!"Q".equals(shape)){

        while (!"Q".equals(shape) && !"R".equals(shape) && !"T".equals(shape) ) {

                System.out.println(shape +" is an incorrect Option Please Enter again");
                shape = shapescanner.nextLine().toUpperCase();
        }
        if ("R".equals(shape)) {
            Rectangle();

        } else if ("T".equals(shape)) {
            Triangle();
        }
        if (area > largestShape) {
            if ("R".equals(shape)) {
                largestSide1=side1;
                largestSide2=side2;
                largestShapeName= "R";
            }else {
                largestSide1=side1;
                largestSide2=side2;
                largestSide3=side3;
                largestShapeName= "T";
            }
            System.out.println("Please Enter The shape you want to Draw");
            shape = shapescanner. nextLine().toUpperCase();
        }else {
        System.out.println("Please Enter The shape you want to Draw");
        shape = shapescanner. nextLine().toUpperCase();
        }
        }
        if ("Q".equals(shape)) {
             for (int i = 0; i < arrayShape.size(); i++) {
                  System.out.println(arrayShape.get(i));
                }
            myfinch.quit();
            System.exit(0);
        }
    }
    public static void Rectangle () {
        int side1time = 0;
        int side2time = 0;

        System.out.println("Please Enter The Length of first side");
        side1 = Integer.parseInt(sidescanner. nextLine());
        while (side1>80 || side1<20) {

            System.out.println(side1 +" is an incorrect Size Please Enter again");
            side1 = Integer.parseInt(sidescanner. nextLine());
    }
        System.out.println("Please Enter The Length of second side");
        side2 = Integer.parseInt(sidescanner. nextLine());
        while (side2>80 || side2<20) {

            System.out.println(side2 +" is an incorrect Size Please Enter again");
            side2 = Integer.parseInt(sidescanner. nextLine());
    }
        switch (side1) {
        case 20:  side2time = 2000 ;
        break;
        case 21:  side2time = 2000 ;
        break;
        case 22:  side1time = 2100 ;
        break;
        case 23:  side1time = 2200 ;
        break;
        case 24:  side1time = 2300 ;
        break;
        case 25:  side1time = 2400 ;
        break;
        case 26:  side1time = 2500 ;
        break;
        case 27:  side1time = 2600 ;
        break;
        case 28:  side1time = 2700 ;
        break;
        case 29:  side1time = 2800 ;
        break;
        case 30:  side1time = 2900 ;
        break;
        case 31:  side1time = 3000 ;
        break;
        case 32:  side1time = 3100 ;
        break;
        case 33:  side1time = 3200 ;
        break;
        case 34:  side1time = 3300 ;
        break;
        case 35:  side1time = 3400 ;
        break;
        case 36:  side1time = 3500 ;
        break;
        case 37:  side1time = 3600 ;
        break;
        case 38:  side1time = 3700 ;
        break;
        case 39:  side1time = 3800 ;
        break;
        case 40:  side1time = 3900 ;
        break;
        case 41:  side1time = 4000 ;
        break;
        case 42:  side1time = 4100 ;
        break;
        case 43:  side1time = 4200 ;
        break;
        case 44:  side1time = 4300 ;
        break;
        case 45:  side1time = 4400 ;
        break;
        case 46:  side1time = 4500 ;
        break;
        case 47:  side1time = 4600 ;
        break;
        case 48:  side1time = 4700 ;
        break;
        case 49:  side1time = 4800 ;
        break;
        case 50:  side1time = 4900 ;
        break;
        case 51:  side1time = 5000 ;
        break;
        case 52:  side1time = 5100 ;
        break;
        case 53:  side1time = 5200 ;
        break;
        case 54:  side1time = 5300 ;
        break;
        case 55:  side1time = 5400 ;
        break;
        case 56:  side1time = 5500 ;
        break;
        case 57:  side1time = 5600 ;
        break;
        case 58:  side1time = 5700 ;
        break;
        case 59:  side1time = 5800 ;
        break;
        case 60:  side1time = 5900 ;
        break;
        case 61:  side1time = 6000 ;
        break;
        case 62:  side1time = 6100 ;
        break;
        case 63:  side1time = 6200 ;
        break;
        case 64:  side1time = 6300 ;
        break;
        case 65:  side1time = 6400 ;
        break;
        case 66:  side1time = 6500 ;
        break;
        case 67:  side1time = 6600 ;
        break;
        case 68:  side1time = 6700 ;
        break;
        case 69:  side1time = 6800 ;
        break;
        case 70:  side1time = 6900 ;
        break;
        case 71:  side1time = 7000 ;
        break;
        case 72:  side1time = 7100 ;
        break;
        case 73:  side1time = 7200 ;
        break;
        case 74:  side1time = 7300 ;
        break;
        case 75:  side1time = 7400 ;
        break;
        case 76:  side1time = 7500 ;
        break;
        case 77:  side1time = 7600 ;
        break;
        case 78:  side1time = 7700 ;
        break;
        case 79:  side1time = 7800 ;
        break;
        case 80:  side1time = 7900 ;
        break;
        }
        switch (side2) {
        case 20:  side2time = 2000 ;
        break;
        case 21:  side2time = 2000 ;
        break;
        case 22:  side2time = 2100 ;
        break;
        case 23:  side2time = 2200 ;
        break;
        case 24:  side2time = 2300 ;
        break;
        case 25:  side2time = 2400 ;
        break;
        case 26:  side2time = 2500 ;
        break;
        case 27:  side2time = 2600 ;
        break;
        case 28:  side2time = 2700 ;
        break;
        case 29:  side2time = 2800 ;
        break;
        case 30:  side2time = 2900 ;
        break;
        case 31:  side2time = 3000 ;
        break;
        case 32:  side2time = 3100 ;
        break;
        case 33:  side2time = 3200 ;
        break;
        case 34:  side2time = 3300 ;
        break;
        case 35:  side2time = 3400 ;
        break;
        case 36:  side2time = 3500 ;
        break;
        case 37:  side2time = 3600 ;
        break;
        case 38:  side2time = 3700 ;
        break;
        case 39:  side2time = 3800 ;
        break;
        case 40:  side2time = 3900 ;
        break;
        case 41:  side2time = 4000 ;
        break;
        case 42:  side2time = 4100 ;
        break;
        case 43:  side2time = 4200 ;
        break;
        case 44:  side2time = 4300 ;
        break;
        case 45:  side2time = 4400 ;
        break;
        case 46:  side2time = 4500 ;
        break;
        case 47:  side2time = 4600 ;
        break;
        case 48:  side2time = 4700 ;
        break;
        case 49:  side2time = 4800 ;
        break;
        case 50:  side2time = 4900 ;
        break;
        case 51:  side2time = 5000 ;
        break;
        case 52:  side2time = 5100 ;
        break;
        case 53:  side2time = 5200 ;
        break;
        case 54:  side2time = 5300 ;
        break;
        case 55:  side2time = 5400 ;
        break;
        case 56:  side2time = 5500 ;
        break;
        case 57:  side2time = 5600 ;
        break;
        case 58:  side2time = 5700 ;
        break;
        case 59:  side2time = 5800 ;
        break;
        case 60:  side2time = 5900 ;
        break;
        case 61:  side2time = 6000 ;
        break;
        case 62:  side2time = 6100 ;
        break;
        case 63:  side2time = 6200 ;
        break;
        case 64:  side2time = 6300 ;
        break;
        case 65:  side2time = 6400 ;
        break;
        case 66:  side2time = 6500 ;
        break;
        case 67:  side2time = 6600 ;
        break;
        case 68:  side2time = 6700 ;
        break;
        case 69:  side2time = 6800 ;
        break;
        case 70:  side2time = 6900 ;
        break;
        case 71:  side2time = 7000 ;
        break;
        case 72:  side2time = 7100 ;
        break;
        case 73:  side2time = 7200 ;
        break;
        case 74:  side2time = 7300 ;
        break;
        case 75:  side2time = 7400 ;
        break;
        case 76:  side2time = 7500 ;
        break;
        case 77:  side2time = 7600 ;
        break;
        case 78:  side2time = 7700 ;
        break;
        case 79:  side2time = 7800 ;
        break;
        case 80:  side2time = 7900 ;
        break;
        }
        myfinch.setLED(0, 255, 0, 2000);
        myfinch.setWheelVelocities(100,100,side1time);
        myfinch.setLED(255, 0, 0, 200);
        myfinch.setWheelVelocities(100,0,2000);
        myfinch.setWheelVelocities(100,100,side2time);
        myfinch.setLED(255, 0, 0, 200);
        myfinch.setWheelVelocities(100,0,2000);
        myfinch.setWheelVelocities(100,100,side1time);
        myfinch.setLED(255, 0, 0, 200);
        myfinch.setWheelVelocities(100,0,2000);
        myfinch.setWheelVelocities(100,100,side2time);
        myfinch.setLED(255, 0, 0, 200);
        myfinch.setLED(0, 0, 0, 200);
        myfinch.setLED(255, 0, 0, 200);
        rectangleCount += 1;
        arrayShape.add(shape + ":" + side1 + "," + side2);
        System.out.println(arrayShape.get(0));
        area = side1 * side2;
    }
    public static void Triangle() {

    }
}

最佳答案

您的switch(side1) 似乎等同于:

if (side1 == 20) side2time = 2000;
if (side1 > 20 && side1 <= 80) side2time = (side1 - 1) * 100

其他的switch语句也一样。

关于java - Large Switch Case(60 个不同的 Cases)——我该如何减少?或完善代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54949128/

相关文章:

Java随机数生成器需要帮助

eclipse - 在 plug-in.xml 中如何将文件扩展名与 eclipse 插件中的特定类型的编辑器相关联

java - 如何在不使用Eclipse的情况下设置Tomcat的引导项?

php - "No completions available"在 var_

java - 从数据库中检索数据并以json格式显示

java - 致命异常。使用Retrofit2-beta3无法使用retrofit2从apiUrl检索数据

intellij-idea - 哪些编辑器支持Dart的 “Inline local variable”重构?

Eclipse 构建时和运行时类路径,可轻松执行 junit 测试用例

java - Spring资源自动重载

android - 来自 android.R.drawable 的可绘制对象或剪贴画存储在哪里?