为了账号安全,请及时绑定邮箱和手机立即绑定

啊啊,经过Angel同学(?)的提醒,重新完善了一下代码。

package common;
import java.util.Scanner;

public class SentCar {

	public static void main(String[] args) {

		int price = 0;
		int totalPeople = 0;
		int totalShop = 0;
		Car[] cars = new Car[3];
		cars[0] = new CarryPeople("擎天柱", 4, 300, 1);
		cars[1] = new CarryShop("大黄蜂", 20, 400, 2);
		cars[2] = new CarryAll("红蜘蛛", 4, 40, 800, 3);
		System.out.println("欢迎使用变形金刚租车系统");
		System.out.println("您是否要租车:1是 0否");
		Scanner scan = new Scanner(System.in);
		String str1 = scan.next();
		if(str1.equals("0")){
			System.out.println("欢迎下次光临!再见");
		}else if(str1.equals("1")){
			System.out.println("您可使用的租车类型和价格如下:");
			for (int i = 0;i < 3;i++){
				cars[i].printMessage(); 
			}
			System.out.println("请输入你要租车的数量:");
			int number = scan.nextInt();
			
			String[] carryPeople = new String[number];
			String[] carryShop = new String[number];
			
			for(int i = 0;i < number;i++){
				System.out.println("请输入你要租的第"+ (i+1) +"车的类型");
				int type = scan.nextInt();
				if(type > 3| type < 0){
					System.out.println("输入不合法!");
				}else{
					switch (type){
					case 0:
						System.out.println("第" + (i+1) +"辆车是" + cars[type - 1].name);
						price = price +cars[type - 1].price;
						carryPeople[i] = cars[type - 1].name;
					case 1:
						System.out.println("第" + (i+1) +"辆车是" + cars[type - 1].name);
						price = price +cars[type - 1].price;
						carryShop[i] = cars[type - 1].name;
					case 2:
						System.out.println("第" + (i+1) +"辆车是" + cars[type - 1].name);
						price = price +cars[type - 1].price;
						carryPeople[i] = cars[type - 1].name;
						carryShop[i] = cars[type - 1].name;
					}
					/*System.out.println("第" + (i+1) +"辆车是" + cars[type - 1].name);
					price = price + cars[type - 1].price;
					name[i] = cars[type - 1].name;
					selectCars[i] = (CarryAll)cars[type -1];*/
				}				
			}
			System.out.println("请选择你需要的租车天数:");
			int day = scan.nextInt();
			scan.close();
			price = price * day;
			System.out.println("您的账单是:");
			System.out.print("变形金刚系列中可载人的车有:" + "  ");
			for(int i = 0;i < number; i ++){
				if (carryPeople[i] == null){
				}else{
					System.out.print(carryPeople[i] + " ");
				}
			}
		
			System.out.println("总载人量是:" + totalPeople + "人");
			System.out.print("变形金刚系列中可载货的车有:" + "  ");
			for(int i = 0;i < number; i ++){
				if (carryShop[i] == null){
				}else{
					System.out.print(carryShop[i] + " ");
				}
			}
			System.out.println("总载货量是:" + totalShop + "吨");			
			System.out.println("您的租车总价格是"+ price +"元。");
		}
	}
}

下面的是各种类……

package common;

public abstract class Car {
	String name;
	int price;
	int number;
	public void printMessage(){
	}
}
package common;

public class CarryPeople extends Car{
	int busload;
	public CarryPeople(){
	}
	public CarryPeople(String name, int people, int price, int number){
		this.name = name;
		this.busload = people;
		this.price = price;
		this.number = number;
	}
	public void printMessage(){
		System.out.println(number + "." + "\t" + name + "\t" + price + "元/天  \t" + "载人:" + busload + "人");
	}
}
package common;

public class CarryShop extends Car{
	int cargo;
	public CarryShop(){
	}
	public CarryShop(String name, int size, int price, int number){
		this.name = name;
		this.cargo = size;
		this.price = price;
		this.number = number;
	}
	public void printMessage(){
		System.out.println(number + ".\t" + name + "\t" + price + "元/天 \t " + "载货:" + cargo + "吨");
	}

}
package common;

public class CarryAll extends Car{
	int busload;
	int cargo;
	public CarryAll(){
	}
	public CarryAll(String name, int people,int size, int price, int number){
		this.name = name;
		this.cargo = size;
		this.busload = people;
		this.price = price;
		this.number = number;
	}
	public void printMessage() {
		// TODO Auto-generated method stub
		System.out.println(number + "." + "\t" + name + "\t" + price + "元/天  \t" + "载人:" + cargo + "人  载货:" + busload +"吨");
	}

}


正在回答

4 回答

加油加油,程序员都是磨出来的,嘻嘻

0 回复 有任何疑惑可以回复我~

Car[] cars = new Car[3];

这个是怎么解释啊

0 回复 有任何疑惑可以回复我~
#1

单车上的阿凡提

实例化一个Car类的对象数组 数组长度为3
2014-11-05 回复 有任何疑惑可以回复我~

噢sad,没弄清多态 的内容,还忘了运行一边程序,下面的主程序才是正确的……

package common;
import java.util.Scanner;

public class SentCar {

	public static void main(String[] args) {

		int price = 0;
		int totalPeople = 0;
		int totalShop = 0;
		Car[] cars = new Car[3];
		cars[0] = new CarryPeople("擎天柱", 4, 300, 1);
		cars[1] = new CarryShop("大黄蜂", 20, 400, 2);
		cars[2] = new CarryAll("红蜘蛛", 4, 40, 800, 3);
		System.out.println("欢迎使用变形金刚租车系统");
		System.out.println("您是否要租车:1是 0否");
		Scanner scan = new Scanner(System.in);
		String str1 = scan.next();
		if(str1.equals("0")){
			System.out.println("欢迎下次光临!再见");
		}else if(str1.equals("1")){
			System.out.println("您可使用的租车类型和价格如下:");
			for (int i = 0;i < 3;i++){
				cars[i].printMessage(); 
			}
			System.out.println("请输入你要租车的数量:");
			int number = scan.nextInt();
			
			String[] carryPeople = new String[number];
			String[] carryShop = new String[number];
			
			for(int i = 0;i < number;i++){
				System.out.println("请输入你要租的第"+ (i+1) +"车的类型");
				int type = scan.nextInt();
				if(type > 3| type < 0){
					System.out.println("输入不合法!");
				}else{
					switch (type){
					case 1:
						System.out.println("第" + (i+1) +"辆车是" + cars[0].name);
						price = price +cars[0].price;
						carryPeople[i] = cars[0].name;
						totalPeople = totalPeople + 4;
						break;
					case 2:
						System.out.println("第" + (i+1) +"辆车是" + cars[1].name);
						price = price +cars[1].price;
						carryShop[i] = cars[1].name;
						totalShop = totalShop + 20;
						break;
					case 3:
						System.out.println("第" + (i+1) +"辆车是" + cars[2].name);
						price = price +cars[2].price;
						carryPeople[i] = cars[2].name;
						carryShop[i] = cars[2].name;
						totalPeople = totalPeople + 4;
						totalShop = totalShop + 40;
						break;
					}
				}				
			}
			System.out.println("请选择你需要的租车天数:");
			int day = scan.nextInt();
			scan.close();
			price = price * day;
			System.out.println("您的账单是:");
			System.out.print("变形金刚系列中可载人的车有:" + "  ");
			for(int i = 0;i < number; i ++){
				if (carryPeople[i] == null){
				}else{
					System.out.print(carryPeople[i] + " ");
				}
			}
		
			System.out.println("总载人量是:" + totalPeople + "人");
			System.out.print("变形金刚系列中可载货的车有:" + "  ");
			for(int i = 0;i < number; i ++){
				if (carryShop[i] == null){
				}else{
					System.out.print(carryShop[i] + " ");
				}
			}
			System.out.println("总载货量是:" + totalShop + "吨");			
			System.out.println("您的租车总价格是"+ price +"元。");
		}
	}
}

下面是运行结果:

543e72f20001299605000188.jpg

另外CarAll里的输出语句中cargo和busload的位置颠倒了。问题多多,真是个悲伤的故事,继续敲代码好了……

0 回复 有任何疑惑可以回复我~

另外欢迎有人可以告诉我一下,在获取账单中载人、载货车名的部分如何使用switch以外的方法

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530714    人
  • 解答问题       6091    个

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

进入课程
意见反馈 帮助中心 APP下载
官方微信