答答系統(tǒng)搞定,代碼很凌亂,求高人指點!
代碼中現(xiàn)有無法解決的問題: 1、main方法中定義的兩個存放客車和貨車名稱的數(shù)組,想根據(jù)用戶輸入來定義數(shù)組的長度,不知道是定義的位置不對還是什么情況,程序運(yùn)行會出現(xiàn)??????溢出錯誤; 2、打印貨車和客車名稱的時候,出現(xiàn)重名的情況想實現(xiàn)?汽車名稱*數(shù)量??的方式顯示不知該如何解決!
代碼如下:
package com.imooc.carSystem;? //父類
public class Car {
String name;
int money;
int rl;
static int id;
void print() {
id++;
System.out.println(id + ". ? ?" + name + "\t" + money + "元/天 ? ? ?載人:" + rl
+ "人");
}
}
package com.imooc.carSystem;????//客車?yán)^承父類
public class Bus extends Car {
Bus(String name,int money,int rl){
this.name=name;
this.money=money;
this.rl=rl;
}
}
package com.imooc.carSystem;????//貨車?yán)^承父類
public class HuoChe extends Car {
HuoChe(String name,int money,int rl){
this.name=name;
this.money=money;
this.rl=rl;
}
void print() {
id++;
System.out.println(id + ". ? ?" + name + "\t" + money + "元/天 ? ? ?載貨:" + rl
+ "噸");
}
}
package com.imooc.carSystem;????//皮卡車?yán)^承
public class Pka extends Car{
int rl2;
Pka(String name,int money,int rl){
this.name=name;
this.money=money;
this.rl=rl;
}
void print() {
id++;
System.out.println(id + ". ? ?" + name + "\t" + money + "元/天 ? ? ?載人:" + rl
+ "人"+" ?載貨"+rl2+"噸");
}
}
package com.imooc.carSystem;????//主方法
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int zkl = 0, day = 0;
float zhl=0f,jg=0f;
String[] huoche = new String[100];
String[] bus = new String[100];
System.out.println("歡迎使用答答租車系統(tǒng):");
System.out.println("您是否要租車:1是 0否");
Scanner scanner1 = new Scanner(System.in);
if (scanner1.nextInt() == 1) {
System.out.println("您可租車的類型及其價目表:");
System.out.println("序號 ? ?汽車名稱 ? ?租金 ? ? ? ? 容量");
Bus bus1 = new Bus("奧迪A4", 500, 4);
bus1.print();
Bus bus2 = new Bus("馬自達(dá)6", 400, 4);
bus2.print();
Pka pka = new Pka("皮卡雪6", 450, 2);
pka.rl2 = 2;
pka.print();
Bus bus3 = new Bus("金龍", 800, 20);
bus3.print();
HuoChe huoche1 = new HuoChe("松花江", 400, 4);
huoche1.print();
HuoChe huoche2 = new HuoChe("依維柯", 1000, 20);
huoche2.print();
System.out.println("請輸入租車的數(shù)量:");
Scanner scanner2 = new Scanner(System.in);
int carNum = scanner2.nextInt();
// 判斷輸入的租用的車輛數(shù)值是否有效。
if (carNum > 0) {
int hcNum=0,busNum=0;
// 循環(huán)輸入選擇車輛。
for (int i = 1; i <= carNum; i++) {
System.out.println("請輸入第" + i + "兩車的序號:");
Scanner scanner3 = new Scanner(System.in);
int carId = scanner3.nextInt();
// 判斷輸入的車輛序號是否有效
if (carId > 0 && carId <= 6) {
// 將所選擇車輛的名稱存入carTaype[]中。
switch (carId) {
case 1:
bus[busNum] = bus1.name;
busNum=busNum+1;
zkl+=bus1.rl;
jg=jg+500;
break;
case 2:
bus[busNum]=bus2.name;
busNum=busNum+1;
zkl+=bus2.rl;
jg=jg+400;
break;
case 3:
bus[busNum] = pka.name;
busNum=busNum+1;
huoche[hcNum] = pka.name;
hcNum=hcNum+1;
zkl+=pka.rl;
zhl=+pka.rl2;
jg=jg+450;
break;
case 4:
bus[busNum] = bus3.name;
busNum=busNum+1;
zkl+=bus3.rl;;
jg=jg+800;
break;
case 5:
huoche[hcNum]= huoche1.name;
hcNum=hcNum+1;
zhl=zhl+huoche1.rl;;
jg=jg+400;
break;
case 6:
huoche[hcNum] = huoche2.name;
hcNum=hcNum+1;
jg=jg+1000;
zhl=zhl+huoche2.rl;
break;
}
} else {
System.err.println("車輛序號大于0小于等于6");
// 車輛ID不是有效值時結(jié)束for循環(huán)
return;
}
}
System.out.println("請輸入租車天數(shù)");
Scanner scanner4 = new Scanner(System.in);
day = scanner4.nextInt();
if (day > 0) {
System.out.println("您的賬單:");
System.out.println("***可載人的車有:");
for (int j = 0; j < busNum; j++) {
System.out.print(" ?" + bus[j]);
}
System.out.print(" ?共載人:" + zkl+"人");
System.out.println("\n***載貨車有:");
for (int k = 0; k < hcNum; k++) {
System.out.print(" ?" + huoche[k]);
}
System.out.print(" ?共載貨:" + zhl+"噸\n");
System.out.println("***租車總價格:" + jg*day + "元");
} else {
System.err.println("請輸入有效天數(shù)");
}
} else {
System.err.println("租車數(shù)量大于0");
}
} else {
System.err.println("謝謝使用!");
}
}
}
2016-06-19
java的數(shù)組大小是不可以在編譯后變化的。所以想實現(xiàn)第一個 問題可以使用集合。集合是可變大小的。
第二個問題,可以定義一個數(shù)組cars[7],用來存儲6輛車各自的數(shù)量,初始都為0,當(dāng)用戶每次輸入車的序號的時候,對應(yīng)的cars[n]+1。最后輸出結(jié)果的時候,判斷不為零則輸出對應(yīng)的車,如果大于1就連同數(shù)量一起輸出。