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

我写到这不知道咋办,如何才能输出载人载货的车名 求助大佬

package com.答答租车系统;
import java.util.*;
public class Car {   //父类
	public int id;
	public String name;
	public String price;
	public Car(int id,String name,String price) {
		this.id=id;
		this.name=name;
		this.price=price;
		System.out.print(id+"\t"+name+"\t"+price+"\t");
		}
	
	}
	
	
public class Huocar extends Car  {// 子类货车
    public String zaihuo;
    public Huocar(int id,String name,String price,String zaihuo) {
		super(id,name,price);
		this.zaihuo=zaihuo;
		System.out.println(zaihuo+"\t");
	}
}

public class Kecar extends Car  {//子类客车
	public String zairen;
    public Kecar(int id,String name,String price,String zairen) {
	super(id,name,price);
	this.zairen=zairen;
	System.out.println(zairen+"\t");
}

}


public class Picar extends Car  {//子类皮卡
    public String zaihuo;	
	public String zairen;	
	public Picar(int id,String name,String price,String zairen, String zaihuo	) {
		super(id,name,price);
		this.zaihuo=zaihuo;
		this.zairen=zairen;
		System.out.print(zairen+"\t");
		System.out.println(zaihuo+"\t");
	}
}

public class Main {
        public static void main(String[] args) {
		System.out.println("欢迎使用答答租车系统");
		System.out.println("您是否需要租车 :  1是   0否");
		Scanner input=new Scanner(System.in);
		int judge1=input.nextInt();//获取输入值
		if(judge1==1)
		{
			System.out.println("序号\t车辆名称\t 租车价格\t 容量\t");
			Car car[]= {new Kecar(1,"奥迪A4","500元/天","载人:4人"),
			new Kecar(2,"马自达6","400元/天","载人:4人"),
			new Picar(3,"皮卡雪","450元/天","载人:4人","载重:2吨"),
			new Kecar(4,"金龙","800元/天","载人:20人"),
			new Huocar(5,"松花江","400元/天","载重:4吨"),
			new Huocar(6,"依维柯","1000元/天","载重:20吨")};//构造方法输出信息
			/*System.out.println("序号"+"\t"+"车辆名称"+"\t"+"租车价格"+"\t"+" 容量"+"\t");
			Car car1=new Kecar(1,"奥迪A4","500元/天","载人:4人");
			Car car2=new Kecar(2,"马自达6","400元/天","载人:4人");
			Car car3=new Picar(3,"皮卡雪","450元/天","载人:4人","载重:2吨");
			Car car4=new Kecar(4,"金龙","800元/天","载人:20人");
			Car car5=new Huocar(5,"松花江","400元/天","载重:4吨");
			Car car6=new Huocar(6,"依维柯","1000元/天","载重:20吨");*/
		}else
		{
			System.out.println("如有需要欢迎您的使用,再见");
			System.exit(0);
		}
		System.out.println("请输入您要租汽车的数量");
		int sum=input.nextInt();
		int s;
		String zr[]=new String[sum];
		int weight=0;//计算总载重
		int peosum=0;//计算总人数
		int monsum=0;//计算总钱数
		for(int i=0;i<sum;i++) {
			System.out.println("请输入第"+(i+1)+"辆租车的序号");
			 s=input.nextInt();  //保存各辆车
			 switch (s) {
			 case 1: peosum=peosum+4;monsum=monsum+500;zr[i]="奥迪A4";continue;
			 case 2: peosum=peosum+4;monsum=monsum+400;zr[i]="马自达6";continue;
			 case 3: peosum=peosum+4;monsum=monsum+450;zr[i]="皮卡雪6";weight=weight+2;continue;
			 case 4: peosum=peosum+20;monsum=monsum+800;zr[i]="金龙";continue;
			 case 5: monsum=monsum+400;weight=weight+4;zr[i]="松花江";continue;
			 case 6: monsum=monsum+1000;weight=weight+20;zr[i]="依维柯";continue;
			 
			 }
					}
		System.out.println("请输入您要租车的天数");
			int daysum=input.nextInt();
			int monsums=daysum*monsum;//总金额
		    
			System.out.println("您的账单");
			System.out.println("****可载人的车有"+"\n"+"  共载人 :"+peosum);
			System.out.println("****可载货的车有"+"\n"+"  共载货  :"+weight+"吨");
			System.out.println("****租车总价格 : " +  monsums);
			System.out.println("欢迎再次使用");
			}

}


正在回答

4 回答

你所租的车的车名放在了String zr[sum]这个数组中,可以输出zr[]这个数组中的值从而输出车名。由于你把车分成了载人和载货的所以要在输出车名的同时进行划分,这个可以使用String中间涉及判断语句,所以要改的话需要把最终的倒数三,四syso都改一下。

代码部分:System.out.println("您的账单:");

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

                  for(int i=0;i<sum;i++)

                  {

                       if(zr[i]==Car[0].name||zr[i]==Car[1].name||zr[i]==Car[2].name||zr[i]==Car[3].name)

                       System.out.println(zr[i]);

                  }

                 System.out.println("\n共载人:"+peosum);

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

                  for(int i=0;i<sum;i++)

                  {

                  if(zr[i]==Car[2].name||zr[i]==Car[4].name||zr[i]==Car[5].name)

                    System.out.println(zr[i]);

                  }

                 System.out.println("\n共载货:"+weight+"吨");

直接写的,没有用编译器,可能存在一些细节问题,思路是这样的。这是最直接的方法,但是个人不推荐这样做,比较String变量不如比较int变量。

比较int变量的思路:zr数组改为int数组,switch循环中将车子的序号存进zr数组中,或者删除这一步在输入租车序号后将序号存进zr数组中,之后使用if语句和Car数组中id属性比较,相等的话输出Car数组中的name属性(也就是车名)。

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

qq_枯笑_0 提问者

谢谢大神,我也看过一些慕友的代码,每次看到 if ( * instanceof *)这个用判断类型这里我就看不懂了
2017-08-06 回复 有任何疑惑可以回复我~
#2

qq_枯笑_0 提问者

再次感谢大神,我在这个问题都纠结一天了,感觉瞬间豁然开朗
2017-08-06 回复 有任何疑惑可以回复我~
#3

qq_枯笑_0 提问者

我还有个问题请教下,就是按照这样写输出来就可能包含两个相同的名字,如果我租的车都是一样的,那最后结果就会出现重复
2017-08-07 回复 有任何疑惑可以回复我~

应用List

CarProperty.java//父类

package zuchexitong;


public class CarProperty {

public String carName;//车辆名称

public String carType;//车辆类型

public int carZaiKe;//载客量

public int carZaiHuo;//载货量

public int carZuJin;//每天租金

public CarProperty(){

}

//构造方法

public CarProperty(String carN,String carT,int carZk,int carZh,int carZj){

carName=carN;

carType=carT;

carZaiKe=carZk;

carZaiHuo=carZh;

carZuJin=carZj;

}

}

HuoChe.java//子类

package zuchexitong;


public class HuoChe extends CarProperty{


}

KeChe.java//子类

package zuchexitong;


public class KeChe extends CarProperty{



}

PiKar.java//子类

package zuchexitong;


public class PiKar extends CarProperty{

}

Test//测试类


package zuchexitong;


import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

import java.util.Scanner;


import com.CarProperty;


import test.Course;

/**

 * 应用了list的方法调用

 * 需要添加的有List的变量

 * 定义泛型

 * 构造类的构造器

 * 添加testAdd方法

 * 添加testForEach方法

 * @author Administrator

 *

 */

public class Test2 {

public List<CarProperty> carProperties;

public Test2(){//构造器

carProperties=new ArrayList<CarProperty>();

}

public void testAdd(){

CarProperty[] cars={new CarProperty("1,奥迪", "货车", 2, 3, 100),new CarProperty("2,大众", "货车", 2, 2, 80),

new CarProperty("3,宝马", "客车", 4, 0, 150),new CarProperty("4,一汽", "客车", 4, 0, 100),

new CarProperty("5,五菱", "两用", 8, 2, 250),new CarProperty("6,奔驰", "两用", 2, 3, 160)};

carProperties.addAll(Arrays.asList(cars));

CarProperty temp=(CarProperty)carProperties.get(0);

CarProperty temp2=(CarProperty)carProperties.get(0);

CarProperty temp3=(CarProperty)carProperties.get(2);

CarProperty temp4=(CarProperty)carProperties.get(3);

CarProperty temp5=(CarProperty)carProperties.get(2);

CarProperty temp6=(CarProperty)carProperties.get(3);

}

public void testForEach(){

for(Object obj:carProperties){

CarProperty cr=(CarProperty)obj;

System.out.println("课程:"+cr.carName+"\t"+cr.carType+"\t"+

cr.carZaiHuo+"\t"+cr.carZaiKe+"\t"+cr.carZuJin);

}

}

public static void main(String[] args) {

Test2 t2=new Test2();


int sum=0;

System.out.println("请选择是否租车?(1,是   2,否):");

Scanner input=new Scanner(System.in);

int zchy=input.nextInt();

if (zchy==1) {

System.out.println("车辆名称\t车辆类型\t载客量/人\t载货量/吨\t租金/每天");

t2.testAdd();

t2.testForEach();

System.out.println("请选择租车数量:");

Scanner input2=new Scanner(System.in);

int zcsl=input2.nextInt();

for (int i = 1; i < zcsl+1; i++) {

System.out.println("请输入要租用的第几辆车的编号:");

Scanner input3=new Scanner(System.in);

int zcbh=input3.nextInt();

switch (zcbh) {

case 1:

sum+=100;

break;

case 2:

sum+=80;

break;

case 3:

sum+=150;

break;

case 4:

sum+=100;

break;

case 5:

sum+=250;

break;

case 6:

sum+=160;

break;


default:

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

break;

}

System.out.println("请输入租用天数:");

Scanner input4=new Scanner(System.in);

int zcts=input4.nextInt();

sum=sum*zcts;

System.out.println("总租车辆数:"+zcsl+"辆\t租用天数:"+zcts+"天\t总金额:¥"+sum);

}

}

}

}



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

在比较String变量的过程中最好使用equals(); 函数

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

你想输出哪种形式的呢?如果想单纯的想输出租的车的名字可以的话可以将zr[]数值中的值先进行处理,剔除相同的值。然后再进入for循环输出。

剔除方法:将zr[]数组中的值依次与之后的值相比较,相同的时候将zr[]当前值赋值为空,然后之后的数组序号前移。

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

qq_枯笑_0 提问者

我这样写出来,有一个问题运行会出现一堆哈希码
2017-08-09 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

我写到这不知道咋办,如何才能输出载人载货的车名 求助大佬

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信