首页 > 解决方案 > Java switch 循环中断问题

问题描述

我从 Java 开始,找到了一个我正在努力解决的 switch 任务。希望您能以正确的方式指出我。用户可以输入字符串 1, 1-, 2, 2-, 3, 3-, 4, 4- 或 5,其值可以是 1 到 10。switch 用于将 1 转换为 1.0, 1- 到1.5、2 到 2.0、2- 到 2.5 等,但是我只需要存储它使用的 1 或 0,但不能是布尔值,因为我需要对其进行一些数学运算。并且这个开关应该重复给定的重复次数。这应该在不使用数组的情况下完成。所以我想到了创建一堆 9 个声明来为每个 1、1- 等存储 1 或 0,以及另外 9 个来存储它们对应的值。只要我只运行一次就可以了,但是当我进入循环时,它会变得混乱而无法正常工作。我觉得这是我对休息的误解,但我只是不明白。谢谢

循环情况下的输出如下所示: Enter Grade 1- Enter stock for 1-: 3 Enter grade Invalid gradeEnter grade

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    int goods = 5;

    int grade1 = 0;
    int grade15 = 0;
    int grade2 = 0;
    int grade25 = 0;
    int grade3 = 0;
    int grade35 = 0;
    int grade4 = 0;
    int grade45 = 0;
    int grade5 = 0;

    int stock1 = 0;
    int stock15 = 0;
    int stock2 = 0;
    int stock25 = 0;
    int stock3 = 0;
    int stock35 = 0;
    int stock4 = 0;
    int stock45 = 0;
    int stock5 = 0;

    for( int i = 1; i <= goods; i++ ){  //start of for

        System.out.println("Enter grade");   // grade input
        String select1 = (sc.nextLine());

        switch (select1) {                    //here starts switch
            case "1":
                grade1 = 1;
                System.out.print("Enter stock for 1: ");
                stock1 = sc.nextInt();
                break;
            case "1-":
                grade15 = 1;
                System.out.print("Enter stock for 1-: ");
                stock15 = sc.nextInt();
                break;
            case "2":
                grade2 = 1;
                System.out.print("Enter stock for 2: ");
                stock2 = sc.nextInt();
                break;
            case "2-":
                grade25 = 1;
                System.out.print("Enter stock for 2-: ");
                stock25 = sc.nextInt();
                break;
            case "3":
                grade3 = 1;
                System.out.print("Enter stock for 3: ");
                stock3 = sc.nextInt();
                break;
            case "3-":
                grade35 = 1;
                System.out.print("Enter stock for 3-: ");
                stock35 = sc.nextInt();
                break;
            case "4":
                grade4 = 1;
                System.out.print("Enter stock for 4: ");
                stock4 = sc.nextInt();
                break;
            case "4-":
                grade45 = 1;
                System.out.print("Enter stock for 4-: ");
                stock45 = sc.nextInt();
                break;
            case "5":
                grade5 = 1;
                System.out.print("Enter stock for 5: ");
                stock5 = sc.nextInt();
                break;
            default:
                System.out.print("Invalid grade");
        }  // end of switch

    }  //end of for



    // test output of values for further use

    System.out.println (grade1);
    System.out.println (grade15);
    System.out.println (grade2);
    System.out.println (grade25);
    System.out.println (grade3);
    System.out.println (grade35);
    System.out.println (grade4);
    System.out.println (grade45);
    System.out.println (grade5);
    System.out.println();
    System.out.println (stock1);
    System.out.println (stock15);
    System.out.println (stock2);
    System.out.println (stock25);
    System.out.println (stock3);
    System.out.println (stock35);
    System.out.println (stock4);
    System.out.println (stock45);
    System.out.println (stock5);
} 

标签: javaloopsswitch-statementbreak

解决方案


推荐阅读