首页 > 解决方案 > 如何从java中的一行读取多个输入?

问题描述

所以我有这个代码:

for(int i=0;i<number;i++) { 
System.out.println("WHAT HOUSEHOLD DO YOU WANT TO CONNECT IN APARTMENT NO."+(i+1));
        System.out.println("1 ) OVEN");
        System.out.println("2 ) TV");
        System.out.println("3 ) VACCUUM CLEANER");
        System.out.println("4 ) REFRIGERATOR");
        int option = cin.nextInt();
        switch(option) {
        case 1: {
            for(initiereAparate e : aparate)
            fw.write((i+1)+" "+e.ob1.denumire+" "+e.ob1.material+" "+e.ob1.culoare+" "+e.ob1.origine+" "+e.ob1.consumEnergie+"\r\n"); break;
        }
        case 2: {
            for(initiereAparate e : aparate)
            fw.write((i+1)+" "+e.ob2.denumire+" "+e.ob2.material+" "+e.ob2.culoare+" "+e.ob2.origine+" "+e.ob2.consumEnergie+"\r\n"); break;
        }
        case 3: {
            for(initiereAparate e : aparate)
            fw.write((i+1)+" "+e.ob3.denumire+" "+e.ob3.material+" "+e.ob3.culoare+" "+e.ob3.origine+" "+e.ob3.consumEnergie+"\r\n"); break;
        }
        case 4: {
            for(initiereAparate e : aparate)
            fw.write((i+1)+" "+e.ob4.denumire+" "+e.ob4.material+" "+e.ob4.culoare+" "+e.ob4.origine+" "+e.ob4.consumEnergie+"\r\n"); break;
        }
        }
}

我想知道如何读取多个输入。例如,我将输入一行 1 2 4 ,这个数字将一次执行 3 个案例。在我已经拥有的代码中,我只能输入 1 个数字,它将执行只有一个案例陈述

标签: java

解决方案


您需要更改输入函数以期望字符串而不是 int。然后只需将您的字符串拆分为数字并循环使用该数字来执行您的切换案例。

PS请注意,此代码未经测试,不要只是复制和粘贴它期望一切都能完美运行。尝试理解我所做的并将其应用到您自己的上下文中。

for (int i = 0; i < number; i++) {
        System.out.println("WHAT HOUSEHOLD DO YOU WANT TO CONNECT IN APARTMENT NO." + (i + 1));
        System.out.println("1 ) OVEN");
        System.out.println("2 ) TV");
        System.out.println("3 ) VACCUUM CLEANER");
        System.out.println("4 ) REFRIGERATOR");
        // we change this to nextLine() because we want a string.
        String option = cin.nextLine();
        // we split our string at white space, this give us an array of string;
        String[] options = option.split("\\s+");
        // we parse every options in the array
        for (int j = 0; j < options.length; j++) {
            // we need to cast the option back to an integer since, it's what we are
            // comparing.
            int currentOption = Integer.parseInt(options[j]);
            switch (currentOption) {
            case 1: {
                for (initiereAparate e : aparate)
                    fw.write((i + 1) + " " + e.ob1.denumire + " " + e.ob1.material + " " + e.ob1.culoare + " "
                            + e.ob1.origine + " " + e.ob1.consumEnergie + "\r\n");
                break;
            }
            case 2: {
                for (initiereAparate e : aparate)
                    fw.write((i + 1) + " " + e.ob2.denumire + " " + e.ob2.material + " " + e.ob2.culoare + " "
                            + e.ob2.origine + " " + e.ob2.consumEnergie + "\r\n");
                break;
            }
            case 3: {
                for (initiereAparate e : aparate)
                    fw.write((i + 1) + " " + e.ob3.denumire + " " + e.ob3.material + " " + e.ob3.culoare + " "
                            + e.ob3.origine + " " + e.ob3.consumEnergie + "\r\n");
                break;
            }
            case 4: {
                for (initiereAparate e : aparate)
                    fw.write((i + 1) + " " + e.ob4.denumire + " " + e.ob4.material + " " + e.ob4.culoare + " "
                            + e.ob4.origine + " " + e.ob4.consumEnergie + "\r\n");
                break;
            }
        }
    }
}

正如Arvind Kumar Avinash 在评论中指出的那样,将关键字添加break到您的 switch case 中很重要,这确保您每次迭代只处理一个 case。


推荐阅读