问答详情
源自:12-1 综合练习

代码如下,请教大佬以下几个问题,帮帮孩子吧快改疯了

首先,Car是父类,truck,pickuptruck和coach都没啥东西,除了定义没写啥东西,主要问题出现在入口这,写下来了但是不知道怎么优化。

一。如何判断用户的输入符合要求,如果不符合要求可以返回重新输入那种。try catch不太好使,只能检验出错误,回不去。然后已经用了if else,现在思维陷入循环出不来了。我猜应该用while,但是真是不知道怎么在里面用。

二。对于输出结果怎么进行判断,因为如果我想要租两辆相同的车,他会打印出“可以载人的车辆有:马自达 马自达”这样的。单写都会,好多东西,什么数组加在一起就迷茫了。

三。如何将程序返回啊,就是代码运行到哪里,退回去。暂时没在脑子里构建出这么一个思想,是不是要理解为,加一个大loop或者条件。感谢感谢。

以下是代码:

package com.car;

import java.util.Scanner;

public class Initial extends Car{


public static void main(String[] args) {

Scanner input = new Scanner(System.in);

//“利用子类创建新类型,并合并成数组”

Car[] carlist = {new Coach(1, "奥迪A4", 500, 4),new Coach(2, "马自达6", 400, 4),new PickupTruck(3, "皮卡雪6", 450, 4, 2),new Coach(4, "金龙", 800, 20),new Truck(5, "松花江", 400, 4),new Truck(6, "依维柯", 1000, 20)};

System.out.println("欢迎使用答答租车系统:");

System.out.println("您是否要租车:1.是 0.否");

int ab = input.nextInt();

//how to check the invalid input?

if(ab == 1) {

//String format = "%-8s%-10s%-8s%-6s\n";

System.out.println("序号" + "\t" + "汽车名称" + "\t" + "租金" + "\t" + "\t" + "容量");

for(int q=0;q<carlist.length;q++) {

carlist[q].print();

}

System.out.println("请输入您要租车的数量");

int num = input.nextInt();

int sum=0;

int sumh=0;

int sumc=0;

int[] ID = new int[num];

for(int i=0;i<num;i++) {

System.out.println("请输入您要租的第" + (i+1) + "辆车的序号");

int id = input.nextInt();

System.out.println("请选择要租车的天数");

int day = input.nextInt();

sum+=(carlist[id-1].price)*day;

sumh+=carlist[id-1].humanCapacity;

sumc+=carlist[id-1].capacity;

ID[i]=id;

}

System.out.println("您的账单为");

System.out.println("可载人的车辆有:");

for(int j=0;j<num;j++) {

if(carlist[ID[j]-1].humanCapacity!=0) {

System.out.println(carlist[ID[j]].name);

}else {

System.out.println("您没有选择载人的车辆");

}

}

System.out.println("您总共可以载" + sumh + "人");

System.out.println("可载货的车辆有:");

for(int k=0;k<num;k++) {

if(carlist[ID[k]-1].capacity!=0) {

System.out.println(carlist[ID[k]].name);

}else {

System.out.println("您没有选择载货的车辆");

}

}

System.out.println("您总共可以载" + sumc + "吨");

System.out.println("您的总费用为" + sum + "块钱");

System.out.println("请根据指示付款");

System.out.println("谢谢您的使用,欢迎下次光临");

}else {

System.out.println("感谢您使用租车系统,欢迎下次光临");

System.exit(0);

}

//how about if the user want to rent other cars?

}

}


提问者:钱君博 2019-12-30 12:31

个回答

  • 慕侠3382504
    2020-01-13 17:30:48
    已采纳

    我是应为受到你代码部分启迪,现在回报你。你可以使用while(true)这种循环来返回上一步,当输入你特定指令时进行下步循环。即你先判断用户输入是否对,错就continue,用户输入你所设定的特定字符串以后返回上一步。

  • 慕瓜7049329
    2020-02-19 14:51:50

    int rentOrNot=2;

    while ((rentOrNot!=0) &&(rentOrNot !=1)) {

    rentOrNot=input.nextInt();

    if (rentOrNot==0){

    System.out.println("感谢使用,再见");

    }else if (rentOrNot!=1) {

    System.out.println("输入有误,请重新输入");

    }else if (rentOrNot==1) {

    System.out.println("您可租车的 类型及其价目表:");

    }

    }

    第一个问题 while怎么用,我是这么写的,供参考

  • qq_明_54
    2020-01-10 16:49:13

    list装汽车,选相同的汽车list里边加一个,用do-while 里边多写几个if作为每一步的操作,if里的return写while里边的条件(就是希望跳转到那个操作步骤)