钱君博
2019-12-30 12:31
首先,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?
}
}
我是应为受到你代码部分启迪,现在回报你。你可以使用while(true)这种循环来返回上一步,当输入你特定指令时进行下步循环。即你先判断用户输入是否对,错就continue,用户输入你所设定的特定字符串以后返回上一步。
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怎么用,我是这么写的,供参考
list装汽车,选相同的汽车list里边加一个,用do-while 里边多写几个if作为每一步的操作,if里的return写while里边的条件(就是希望跳转到那个操作步骤)
Java入门第二季 升级版
530652 学习 · 6091 问题
相似问题