Java 从另一个对象创建的对象访问对象的方法
我有一个程序读取两个文件,一个文件用于创建帐户,另一个用于引用与每个帐户相关的内容,并提供用于计算成本的值 首先,第一个文件 创建国内或商业帐户 如果是国内的,则为帐户分配一个读取的计量编号 如果是商用的,则创建仪表对象数组 每个电表都有一个电表编号,可以有三种类型的电价峰值、非峰值、自定义 制定适当的关税 每个电价都有一个costkWh函数,返回一个成本 然后,第二个文件有一个表号列表、读取的电费以及读取的千瓦时数。在不同的电价类型下,每个电表编号可能出现多次 然后,我的问题变成了引用一个特定的电表,以及它的电价类型和要计算的kWh值,并返回与每个电表相关的总成本 我一直在主班的基础上工作: 将第二个文件中的仪表读数加载并以某种方式存储 加载第一个文件,并通过访问??Account.MeterNumber[x].SOMETHING.Tariff[y].costv 其中,x是参考的计量编号,y是读取的电价,v是要计算的kWh值和该账户应付总额的输出 循环浏览所有帐户,然后打印带有应付总额的帐号列表 当试图以某种方式调用成本函数时,问题来了,我根本不知道如何从它的创建方式访问它,并且由于与一个电表关联的任何数量和类型的电费,不同电费类型的成本计算,每个电表的tarrif数组中的每个电费都是未知的电费类型 任何帮助都会很好,谢谢 片段: Account,Main调用Account.loadJava 从另一个对象创建的对象访问对象的方法,java,class,object,subclass,Java,Class,Object,Subclass,我有一个程序读取两个文件,一个文件用于创建帐户,另一个用于引用与每个帐户相关的内容,并提供用于计算成本的值 首先,第一个文件 创建国内或商业帐户 如果是国内的,则为帐户分配一个读取的计量编号 如果是商用的,则创建仪表对象数组 每个电表都有一个电表编号,可以有三种类型的电价峰值、非峰值、自定义 制定适当的关税 每个电价都有一个costkWh函数,返回一个成本 然后,第二个文件有一个表号列表、读取的电费以及读取的千瓦时数。在不同的电价类型下,每个电表编号可能出现多次 然后,我的问题变成了引用一个特定
public static Account load(Scanner sc) {
if (sc.hasNextLine()) {
AccountNumber accountNumber = AccountNumber.fromString(sc.nextLine());
String kind = sc.next();
sc.nextLine();
if (kind.equals("D")) {
return new DomesticAccount(sc, accountNumber);
} else {
return new CommercialAccount(sc, accountNumber);
}
} else {
return null;
}
}
CommercialAccount和DomesticAccount是相同的,但只存储一个表编号,而不是一个表数组
public class CommercialAccount extends Account {
private Meter[] meters;
public CommercialAccount(Scanner sc, AccountNumber accountNumber) {
this.accountNumber = accountNumber;
int n = sc.nextInt();
sc.nextLine();
meters = new Meter[n];
for (int i = 0; i < n; i++) {
meters[i] = Meter.load(sc);
}
}
public MeterNumber[] getMeterNumbers() {
MeterNumber[] ms = new MeterNumber[meters.length];
for (int i = 0; i < meters.length; i++) {
ms[i] = meters[i].getMeterNumber();
}
return ms;
}
}
合同塔里夫
public class ContractedTariff extends Tariff {
private double r1, r2, r3, // rates in $/kWh
t1, t2; // thresholds in kWh
public static ContractedTariff load(Scanner sc) {
ContractedTariff ct = new ContractedTariff(sc.nextDouble(), sc.nextDouble(),
sc.nextDouble(), sc.nextDouble(), sc.nextDouble());
sc.nextLine();
return ct;
}
public double cost(double kWh) {
return 666.0; // placeholder
}
}
在PeakTariff中,PeakTariff本质上是相同的
public class OffPeakTariff extends Tariff {
public static final double RATE = 0.1543; // $/kWh
// only one instance is required.
public static final OffPeakTariff OFF_PEAK_TARIFF = new OffPeakTariff();
public double cost(double kWh) {
return 666.0; // placeholder
}
}
请给出一些代码,这样更容易帮助。不用担心,我已经添加了我认为解决这个问题所必需的所有代码,抱歉,如果我违反了一系列关于如何提问的规则,这里有点新,我不理解你的问题,从一个帐户开始,迭代它的计量表,迭代它们的费率,每一个的呼叫成本和金额;这就是问题所在吗?这是一项任务,因此操作顺序和实现方式很重要。Main创建帐户,创建电表,电表创建电费。Main还需要在创建后读取一个账户,并查看其电表,参考电表的千瓦时使用水平和每个电表的每个电价,然后将账户所有电表的成本结果相加,并打印一个带有支付成本的账号列表。我真正遇到的唯一问题是如何从Main调用每个帐户电表电费的成本函数?谢谢
public class ContractedTariff extends Tariff {
private double r1, r2, r3, // rates in $/kWh
t1, t2; // thresholds in kWh
public static ContractedTariff load(Scanner sc) {
ContractedTariff ct = new ContractedTariff(sc.nextDouble(), sc.nextDouble(),
sc.nextDouble(), sc.nextDouble(), sc.nextDouble());
sc.nextLine();
return ct;
}
public double cost(double kWh) {
return 666.0; // placeholder
}
}
public class OffPeakTariff extends Tariff {
public static final double RATE = 0.1543; // $/kWh
// only one instance is required.
public static final OffPeakTariff OFF_PEAK_TARIFF = new OffPeakTariff();
public double cost(double kWh) {
return 666.0; // placeholder
}
}