墨歆洹
2020-03-11 20:35
采纳率: 100%
浏览 884
已采纳

java 在for循环中使用scanner然后,输入三组数据,然后判断

图片说明
1. 就是红色圈出来这部分就是运行时的效果,应该怎么实现呢,想了for循环 for (int i = 0; i <carnum1 ; i++) {
Scanner input=new Scanner(System.in);
String temp =input.nextLine();
String a[]=temp.split(" ");
int num1=Integer.parseInt(a[0]);
int num2=Integer.parseInt(a[1]);
switch (num1){
case 1: System.out.println("奥迪");break;
case 2: System.out.println("马自达");break;
case 3: System.out.println("皮卡雪");break;
case 4: System.out.println("金龙");break;
case 5: System.out.println("松花江");break;
case 6: System.out.println("依维柯");break;}
但是输出以一次一次输出的,

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • Gosse0405 2020-03-11 23:20
    已采纳
    /**
     * 作者:WGS
     * 微信:w1150111308
     * Q  Q:1150111308
     * 邮箱:gosse0405@163.com
     */
    public class Answer {
    
        static Scanner sc = new Scanner(System.in);
    
        static String[] cars = {"", "奥迪A4", "马自达6", "皮卡雪6", "金龙", "松花江", "依维柯"};
        static int[] prices = {0, 500, 400, 450, 800, 400, 1000};
        static int[] persons = {0, 4, 4, 4, 20, 0, 0};
        static int[] tons = {0, 0, 0, 2, 0, 4, 20};
    
        public static void main(String[] args) {
            System.out.println("欢迎使用租车系统");
    
            // 输入的数字
            int whether = inputNum("您是否要租车:1是,0否");
            switch (whether) {
                case 1:
                    // 租车系统内容
                    content();
                    // 输入租车数量
                    int num = 0;
                    while (true) {
                        num = inputNum("请输入要租车的数量:");
                        if (num > 0 && num < cars.length) {
                            break;
                        } else {
                            System.out.println("您输入的内容不在系统范围,请重新输入!");
                        }
                    }
                    // 执行租车流程和账单结算
                    total(inputGroupStr("请输入您要租车的序号和天数:", num));
                    break;
                case 0:
                    System.out.println("欢迎您下次使用本系统!");
                    break;
                default:
                    System.out.println("输入错误的数字");
            }
        }
    
        /**
         * 租车主体内容
         */
        public static void content() {
            System.out.println("您可租车的类型及其节目表如下:");
            for (int i = 1; i < cars.length; i++) {
                System.out.println(
                    "序号-" + i + "\t"
                    + "汽车名称:" + cars[i] + "\t"
                    + "租金:" + prices[i] + "/天 \t"
                    + "容量:" + (persons[i] != 0 ? ("最多载人" + persons[i] + "人") : "")
                    + (persons[i] != 0 && tons[i] != 0 ? "," : "")
                    + (tons[i] != 0 ? ("最多载货" + tons[i] + "吨") : "")
                );
            }
            System.out.println();
        }
    
        /**
         * 账单计算
         */
        public static void total(int[][] orderDays) {
            System.out.println("您的账单如下:");
            int total = 0;
            for (int i = 0; i < orderDays.length; i++) {
                int order = orderDays[i][0];
                int days = orderDays[i][0];
                total += prices[order] * days;
                System.out.println(cars[order] + " \t" + days + "天");
            }
            System.out.println("总价格:" + total);
    
        }
    
        /**
         * 输入单个数字内容
         * @return
         */
        public static int inputNum(String info) {
            System.out.println(info);
            String s = sc.nextLine();
            int num = -1;
            try {
                num = Integer.parseInt(s);
            } catch (NumberFormatException e) {
                return num;
            }
            return num;
        }
        /**
         * 输入三组数字内容
         * @return
         */
        public static int[][] inputGroupStr(String infoGroup, int num) {
            int[][] nums = new int[num][2];
            System.out.println(infoGroup);
            for (int i = 0; i< num; i++) {
                while (true) {
                    try {
                        String[] s = sc.nextLine().split(" ");
                        int order = Integer.parseInt(s[0]);
                        int days = Integer.parseInt(s[1]);
                        if (order >= cars.length || order <= 0 || days >= cars.length && days <= 0) {
                            System.out.println("您输入的内容不在系统范围,请重新输入!");
                        } else {
                            nums[i][0] = order;
                            nums[i][1] = days;
                            break;
                        }
    
                    } catch (Exception e) {
                        System.out.println("您输入的内容不规范,请重新输入!");
                        System.out.println("【示例】:2 3");
                    }
                }
            }
            return nums;
        }
    }
    

    https://blog.csdn.net/qq_34417433/article/details/104808640

    点赞 1 打赏 评论
  • 「已注销」 2020-03-11 22:27

    当然是一次一次输出了,你这循环体中,每次输入了之后都用switch判断输出了,肯定是每次都输出了。代码稍微改一下就行,你在for循环外部定义一个String数组,长度为carnum1,然后在switch的case里不要直接输出,而是把结果拼成你想要的字符串,然后放到数组中,在for循环执行完之后再遍历一下这个数组,打印就好了

    点赞 打赏 评论

相关推荐 更多相似问题