如何从while添加变量以切换

时间:2015-10-20 21:03:27

标签: java string while-loop switch-statement

我理解我的IDE告诉我的内容,我无法在交换机中使用s1变量。我不明白为什么或如何解决它。

根据我到目前为止所提到的内容,这就是我想要做的事情:

  

使用特定命令打开和关闭虚构机器   接受随机字符串而不会崩溃

对代码进行修正会很好。但我真正想知道的是,我做的事情显然是愚蠢的,还是我不可能做到的?

import java.util.Scanner;

public class Switches {
    public static void main(String[] args) {

        int myInt = 1;

        while (myInt < 20) {
            Scanner input = new Scanner(System.in);

            System.out.println("Please enter a command: ");
            String s1;
            s1 = input.nextLine();

            System.out.println(s1);
        }

        switch (s1) {
        case "start":
            System.out.println("Machine Started!");
            myInt++;
            break;

        case "stop":
            System.out.println("Machine Stopped!");
            myInt++;
            break;

        default:
            System.out.println("Command not recognised!");
        }

        while (myInt > 100)
            ;
        System.out.println("Error");
    }
}

这是我修改后的代码:

import java.util.Scanner;

public class Switches {
    public static void main(String[] args) {

        int myInt = 1;

        do {

            System.out.println("Please enter a command: ");
            String s1;
            Scanner input = new Scanner(System.in);
            s1 = input.nextLine();

            switch (s1) {
            case "start":
                System.out.println("Machine Started!");
                myInt++;
                break;

            case "stop":
                System.out.println("Machine Stopped!");
                myInt++;
                break;

            default:
                System.out.println("Command not recognised!");
            }
        }

        while (myInt < 100);

    }
}

3 个答案:

答案 0 :(得分:1)

在这段代码中,我看到变量myInt永远不会改变:

while(myInt < 20){
    Scanner input = new Scanner(System.in);

    System.out.println("Please enter a command: ");
    String s1;
    s1 = input.nextLine();

    System.out.println(s1);
}

你在哪里改变那个变量?因为你正在做一个无限循环,那个变量总是为1而永远不会到达开关

答案 1 :(得分:1)

你在while循环中定义s1但在循环之后进行访问,因此它不存在于循环之外。只需在while循环之前定义s1,你应该很好。像:

int myInt = 1;
String s1;

while(myInt < 20){
    Scanner input = new Scanner(System.in);

    System.out.println("Please enter a command: ");
    s1 = input.nextLine();

    System.out.println(s1);
}       

答案 2 :(得分:1)

如果myInt小于100,那么最后一个while循环也是一个无限循环。在while循环之后直接分号是没有意义的。