只定义了一个汽车类,写的很臃肿,还请大佬们指点

来源:12-2 项目问题解析 1

慕妹5212213

2019-04-25 09:47

package ca;
import java.util.Scanner;

class Car {
    public double price;//租金
    public int busload;//载客量
    public int boatload;//载货量
    public String name;//车名
}


public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Car ad = new Car();//新建对象
        ad.price = 500.0;
        ad.busload = 4;
        ad.name="奥迪A4";

        Car mzd = new Car();
        mzd.price = 400.0;
        mzd.busload = 4;
        mzd.name="马自达6";

        Car pk = new Car();
        pk.price = 450.0;
        pk.busload = 4;
        pk.boatload = 2;
        pk.name="皮卡雪6";

        Car jl = new Car();
        jl.price = 800.0;
        jl.busload = 20;
        jl.name="金龙";

        Car shj = new Car();
        shj.price = 400.0;
        shj.boatload = 4;
        shj.name="松花江";

        Car ywk = new Car();
        ywk.price = 1000.0;
        ywk.boatload = 20;
        ywk.name="依维柯";

        System.out.println("欢迎使用租车系统");
        System.out.println("您是否要租车:1是 0否");
        int a = scanner.nextInt();
        if (a == 0) {
            System.out.println("退出系统");
        } else if (a == 1) {
            System.out.println("您可租车的类型及价目表:");
            System.out.println("序号 汽车名称 租金      容量");
            System.out.println("1    奥迪A4   500元/天  载人:4人");
            System.out.println("2    马自达6  400元/天  载人:4人");
            System.out.println("3    皮卡学6  450元/天  载人:4人  载货:2吨");
            System.out.println("4    金龙     800元/天  载人:20人");
            System.out.println("5    松花江   400元/天  载活:4吨");
            System.out.println("6    依维柯   1000元/天 载活:20吨");


           System.out.println("请输入您要租车的数量");
           int num=scanner.nextInt();
           //System.out.println(b);
            Car[] obj=new Car[num];//定义对象数组


          //将输入的对象保存至对象数组
           for (int i=1;i<=num;i++) {
               System.out.println("请输入第" + i + "量车的序号");
               int c = scanner.nextInt();
               switch (c){
                   case 1:obj[i-1]=ad;
                   break;
                   case 2:obj[i-1]=mzd;
                   break;
                   case 3:obj[i-1]=pk;
                   break;
                   case 4:obj[i-1]=jl;
                   break;
                   case 5:obj[i-1]=shj;
                   break;
                   case 6:obj[i-1]=ywk;
                   break;
                   default:{
                       System.out.println("输入错误,请重新输入");
                       i--;
                       break;
                   }

               }

           }

            System.out.println("请输入租车天数");
            int day=scanner.nextInt();

            System.out.println("您的账单");
            System.out.println("可载人的车有:");

            //计算载客量
            int busload=0;
            for(int j=0;j<num;j++){
                if(obj[j].busload>0){
                    System.out.print(obj[j].name+"  ");
                }
                busload+=obj[j].busload;
            }
            System.out.println("共载人:"+busload+"人");

            //计算载货量
            System.out.println("可载货的车有:");
            int boatload=0;
            for(int k=0;k<num;k++){
                if(obj[k].boatload>0){
                    System.out.print(obj[k].name+"  ");
                }
                boatload+=obj[k].boatload;
            }
            System.out.println("共载货:"+boatload+"吨");

            //计算租金
            int price=0;
            for(int m=0;m<num;m++){
                price+=obj[m].price;
            }
            price=price*day;
            System.out.println("租车总价格:"+price+"元");

       }else {
           System.out.println("输入错误");
       }

        }
    }


写回答 关注

3回答

  • tiger爱小狄
    2019-05-06 11:01:00
    1. 在car类里写一个有参构造方法,这样new的时候可以直接 Car ad= new Car(500,4,"奥迪4");

    2. System.out.println("1    奥迪A4   500元/天  载人:4人");
                  System.out.println("2    马自达6  400元/天  载人:4人");
                  System.out.println("3    皮卡学6  450元/天  载人:4人  载货:2吨");
                  System.out.println("4    金龙     800元/天  载人:20人");
                  System.out.println("5    松花江   400元/天  载活:4吨");
                  System.out.println("6    依维柯   1000元/天 载活:20吨");

      这些应该用循环打印,不然你前面创建那6个Car对象有啥用?

    3.  //将输入的对象保存至对象数组
                 for (int i=1;i<=num;i++) {
                     System.out.println("请输入第" + i + "量车的序号");
                     int c = scanner.nextInt();
                     switch (c){
                         case 1:obj[i-1]=ad;
                         break;
                         case 2:obj[i-1]=mzd;
                         break;
                         case 3:obj[i-1]=pk;
                         break;
                         case 4:obj[i-1]=jl;
                         break;
                         case 5:obj[i-1]=shj;
                         break;
                         case 6:obj[i-1]=ywk;
                         break;
                         default:{
                             System.out.println("输入错误,请重新输入");
                             i--;
                             break;
                         }
      
                     }
      
                 }

      这里可以在循环里直接计算出载人和载货量和一天的租金m,不需要下面再写循环,然后用m乘以天数就是总租金了。这里你思考一下,是可以实现的。

    4. 对初学者来说,能实现就很棒了,加油。


    柚n

    这个建议很用心了可以说是!

    2019-07-03 10:18:15

    共 1 条回复 >

  • 慕的地8294839
    2019-04-25 14:07:16

    在别的回答下看到,所选车名可以用String name =“  ”;解决 省了好多事 

  • 慕妹5212213
    2019-04-25 10:04:07

    最后的界面

    https://img2.mukewang.com/5cc115900001c19a02910516.jpg

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530652 学习 · 6091 问题

查看课程

相似问题