当前位置: 代码迷 >> Eclipse >> 。找了半天没找到哪出有关问题了
  详细解决方案

。找了半天没找到哪出有关问题了

热度:165   发布时间:2016-04-22 23:41:01.0
求助。。。。找了半天没找到哪出问题了
类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!
  相关解决方案