除了多维数组,您还可以使用面向对象编程 (OOP) 对其进行标记。根据您的描述,您似乎需要一个类层次结构,例如:
abstract class Product
class Desktop extends Product
class Laptop extends Product
class Console extends Product
将桌面、笔记本电脑、控制台等可以使用的所有常用字段/方法放入您的产品类中。
//Just an example
abstract class Product {
String name;
ArrayList<Component> components;
public String getName(){
return name;
}
}
由于每个产品都有多个组件,因此产品需要具有如上所示的组件列表。
abstract class Component{
Double price;
public Double getPrice(){
return price;
}
}
现在您可以拥有 CPU、电源等组件,它们具有一些常见的行为和字段,例如放入 Component 类的价格。每个组件的任何专门的行为/字段都可以放入相应的类中,如下所示的时钟频率:
class CPU extends Component {
Double clockFreq;
}
因此,如果您的部件列表有 3 项长,则可以将其写入文本文件,如下所示:
name,type,price
intelCPU6600,CPU,200
amdCPU7789,CPU,150
PS1Power,PSU,120
newPart,unknown,500
此列表可能是 100 项没有任何问题的项目。使用 Scanner 将其读入您的程序,并为每一行执行以下操作:
String line = scanner.nextLine();
String[] fields = line.split(",");
if("CPU".equals(fields[1]){
CPU cpu = new CPU(fields[0],fields[1],fields[2]);
//Product is an object of the class Product that you should have created earlier
product.components.add(cpu);
} else if("PSU".equals(fields[1]) {
PSU psu = new PSU(fields[0],fields[1],fields[2]);
product.components.add(psu);
} //..so on
如果有一个没有类的通用产品,那么可以使用抽象类:
if("unknown".equals(fields[1]){
Component comp = new Component(fields[0],fields[1],fields[2]);
product.components.add(comp);
}