类Vehicle
package text8;
import java.util.*;
public class Vehicle {
static int id;
static String name;
static int year;
static double price;
public Vehicle(){
Scanner sc = new Scanner(System.in);
System.out.println("创建信息");
System.out.println("输入注册码、车辆制造商、生产年份和当前车的价格");
int nid,nyear;
String nname ;
double nprice;
nid = sc.nextInt();
nname = sc.next();
nyear = sc.nextInt();
nprice =sc.nextDouble();
init(nid,nyear,nname,nprice);
System.out.println("OK!");
}
public void init(int nid,int nyear,String nname,double nprice)
{
id = nid;
name = nname;
year = nyear;
price = nprice;
}
public int getId() {
return id;
}
public String getname() {
return name;
}
public int getyear() {
return year;
}
public double getprice() {
return price;
}
}
测试类text
package text8;
import java.util.*;
public class test {
static Vehicle[] list =new Vehicle[512];
static int m=0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i;
while(true){
System.out.print("1.创建 2.读取 3.退出");
System.out.println();
i = sc.nextInt();
switch(i){
case 1: list[m++] = new Vehicle();break;
case 2: show();break;
case 3: return;
}
}
}
public static void show(){
for(int i=0 ;i<m;i++){
System.out.println("编号:"+(i+1)+" 注册码:"+list[i].getId()+" 车辆制造商:"+list[i].getname()+" 生产年份:"+list[i].getyear()+" 价格:"+list[i].getprice());
}
}
}
输出结果
1.创建 2.读取 3.退出
1
创建信息
输入注册码、车辆制造商、生产年份和当前车的价格
1 2 3 4
OK!
1.创建 2.读取 3.退出
2
编号:1 注册码:1 车辆制造商:2 生产年份:3 价格:4.0
1.创建 2.读取 3.退出
1
创建信息
输入注册码、车辆制造商、生产年份和当前车的价格
9 8 7 6
OK!
1.创建 2.读取 3.退出
2
编号:1 注册码:9 车辆制造商:8 生产年份:7 价格:6.0
编号:2 注册码:9 车辆制造商:8 生产年份:7 价格:6.0
1.创建 2.读取 3.退出
问题:为什么我的第二次创建会把第一次创建的结果覆盖了。。。。。求大神帮忙。
------解决思路----------------------
Vehicle类设计的问题
成员变量不设计成static就不会变成多个对象共享同一内存空间了
我想你的愿意也不是这样的吧,改为private
Done!