Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 大型开关箱(60种不同的箱)-如何减少?或者改进代码_Java_Eclipse_Ide_Switch Statement - Fatal编程技术网

Java 大型开关箱(60种不同的箱)-如何减少?或者改进代码

Java 大型开关箱(60种不同的箱)-如何减少?或者改进代码,java,eclipse,ide,switch-statement,Java,Eclipse,Ide,Switch Statement,所以我有一个开关盒,它以厘米为单位输入一条边的长度,然后选择机器人轮子旋转的时间,以毫秒为单位 用户输入25选择案例25并将时间设置为2000ms 但是有60个不同的可能案例两次,我很困惑如何缩小这个范围? 如果可能的话 import java.util.ArrayList; import java.util.Scanner; import edu.cmu.ri.createlab.terk.robot.finch.Finch; public class assignment2 { s

所以我有一个开关盒,它以厘米为单位输入一条边的长度,然后选择机器人轮子旋转的时间,以毫秒为单位 用户输入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() {

    }
}
您的switchside1似乎相当于:

if (side1 == 20) side2time = 2000;
if (side1 > 20 && side1 <= 80) side2time = (side1 - 1) * 100
这同样适用于另一个switch语句。

您的switchside1似乎相当于:

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

这同样适用于另一个switch语句。

如果要分配的值可以在以后某个时间点更改,则可以使用键/值对填充映射并使用该映射,而可以将这些值放入文件并读入,因此如果这些值更改,则无需重新编译类:

private final static Map<Integer, Integer> SIDE2TIMEMap = new HashMap<>();

static {
    SIDE2TIMEMap.put(Integer.valueOf(20), Integer.valueOf(2000));
    SIDE2TIMEMap.put(Integer.valueOf(21), Integer.valueOf(2000));
    // [...]
    SIDE2TIMEMap.put(Integer.valueOf(80), Integer.valueOf(7900));
}

如果要分配的值可以在以后某个时间点更改,则可以使用键/值对填充映射并使用该映射。您可以将这些值放入一个文件并读入,因此,如果这些值更改,则无需重新编译类:

private final static Map<Integer, Integer> SIDE2TIMEMap = new HashMap<>();

static {
    SIDE2TIMEMap.put(Integer.valueOf(20), Integer.valueOf(2000));
    SIDE2TIMEMap.put(Integer.valueOf(21), Integer.valueOf(2000));
    // [...]
    SIDE2TIMEMap.put(Integer.valueOf(80), Integer.valueOf(7900));
}

非常感谢。这确实适用于给定的值,但是,我必须承认它们是占位符,因为必须测试每个距离,并通过更改ms值使其达到正确的距离来测试20cm、21cm、22xm+。实际值并不像side1-1*100那样线性,这将与这些值一起工作values@AliB2512请在你的帖子中包括这些要求和所有其他要求。重写代码取决于您想要/需要的语义。如果你不解释语义,我们就无法在回答中解释它们。@AliB2512要么有一个计算边时间的公式,要么每个值都是任意的。在第一种情况下,只需在代码中包含公式,在第二种情况下,您必须手动写入所有可能的值-使用开关可以被映射替换,但仍有60行代码。@assylias,不幸的是,它们都是通过实验得出的任意值,所以我想我也无能为力吧,我有那么多行代码谢谢!这确实适用于给定的值,但是,我必须承认它们是占位符,因为必须测试每个距离,并通过更改ms值使其达到正确的距离来测试20cm、21cm、22xm+。实际值并不像side1-1*100那样线性,这将与这些值一起工作values@AliB2512请在你的帖子中包括这些要求和所有其他要求。重写代码取决于您想要/需要的语义。如果你不解释语义,我们就无法在回答中解释它们。@AliB2512要么有一个计算边时间的公式,要么每个值都是任意的。在第一种情况下,只需在代码中包含公式,在第二种情况下,您必须手动写入所有可能的值-使用开关可以被映射替换,但仍有60行代码。@assylias,不幸的是,它们都是通过实验得出的任意值,所以我想我无能为力吧,有很多行代码边时间永远不会改变,它们几乎就像一个查找表,如果你想移动20厘米,轮子应该移动x数量边时间永远不会改变,它们几乎就像一个查找表,如果你想移动20厘米,轮子应该移动x数量