猿问

为什么遍历数组重复输出最后一个值?

package com.DiDi;

import java.util.Scanner;

public class Test {
	public void Test() {
	System.out.println("欢迎使用滴滴租车系统:");
	System.out.println("您是否要租车:1 是	2否");
	Scanner sc1=new Scanner(System.in);
	int sc1a=sc1.nextInt();
	switch (sc1a) {
	case 1:{
		System.out.println("您可租车的类型及其价目表:");
		System.out.println("序号\t汽车名称\t租金\t容量");
		Vehicle[] vehicles= {new Car(1, "奥迪A4", 400, 4),
							 new Car(2, "马自达6", 400, 4),
							 new Pickup(3,"皮卡雪",450,4,2), 
							 new Car(4, "金龙", 800, 20),
							 new Cargo(5,"松花江", 400,4),
							 new Cargo(6, "依维柯", 1000, 20)};
		for(int i=0;i<vehicles.length;i++) {
			//通过for遍历数组下标的方式输出所能租用的所有车辆的信息 
			System.out.println(vehicles[i]); 
			}
		
		break;
	}
	case 2:{
		System.out.println("*****感谢使用滴滴租车系统*****");
		break;
	}
	default:{
		System.out.println("*****您输入的信息有误*****");
		break;
	}
	}
}	
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Test aTest=new Test();
		aTest.Test();
	}

}


package com.DiDi;

public abstract class Vehicle {
	public static int id;
	public static String name;
	public static int price;
}


package com.DiDi;

public class Car extends Vehicle {
	static int sumManned;
	public Car(int id,String name,int price,int manned) {
		Vehicle.id=id;
		Vehicle.name=name;
		Vehicle.price=price;
		Car.sumManned=manned;
	}
	
	@Override
	public String toString() {
		return Vehicle.id+"\t"+name+"\t"+price+"\t"+sumManned;
	}

}



package com.DiDi;

public class Pickup extends Vehicle {
	static int sumCargo;
	static int sumManned;
	public Pickup(int id, String name, int price, int manned, int cargo) {
		// TODO Auto-generated constructor stub
		this.id=id;
		this.name=name;
		this.price=price;
		this.sumManned=manned;
		this.sumCargo=cargo;
	}
	
	@Override
	public String toString() {
		return Vehicle.id+"\t"+name+"\t"+price+"\t"+sumManned+"\t"+sumCargo;
	}
}


package com.DiDi;

public class Cargo extends Vehicle {
	static int sumCargo;
	public Cargo(int id, String name, int price, int cargo) {
		// TODO Auto-generated constructor stub
		this.id=id;
		this.name=name;
		this.price=price;
		this.sumCargo=cargo;
	}
	@Override
	public String toString() {
		return Vehicle.id+"\t"+name+"\t"+price+"\t"+sumCargo;
	}
}

如果输出内存的名称值是不同的,加上重写的toString之后遍历的时候输出值都是相同的,请问各位老哥为什么?

weei2010
浏览 1156回答 1
1回答

慕神2962879

代码看不了
随时随地看视频慕课网APP

相关分类

Java
我要回答