【发布时间】:2014-01-17 21:54:47
【问题描述】:
我应该为我的编程课程编写一个代码,就像您在网上订购一样。我已经到了让程序输入项目编号并返回价格(不含运费)的部分,但是每次运行它时,它似乎都自动将我用来表示价格的变量设置为13. 应设置为零。 这是我的代码中给我带来问题的部分:
class Order {
public Order() {}
public double price(String odd, double quant, int g) {
double set;
if (g == 1) {
if (odd.equals("AT413")) {
set = (50.03 * quant) + set;
} else if (odd.equals("AT414")) {
set = (60.04 * quant) + set;
} else if (odd.equals("AT415")) {
set = (147.01 * quant) + set;
} else if (odd.equals("AT416")) {
set = (38.00 * quant) + set;
} else if (odd.equals("AT417")); {
set = (13.00 * quant) + set;
}
} else if (g == 2) {
if (odd.equals("AT513")) {
set = (50.03 * quant) + set;
} else if (odd.equals("AT514")) {
set = (50.00 * quant) + set;
} else if (odd.equals("AT515")) {
set = (130.02 * quant) + set;
} else if (odd.equals("AT516")) {
set = (25.03 * quant) + set;
} else if (odd.equals("AT517")); {
set = (13.00 * quant) + set;
}
} else if (g == 3) {
if (odd.equals("AT613")) {
set = (50.03 * quant) + set;
} else if (odd.equals("AT614")) {
set = (86.00 * quant) + set;
} else if (odd.equals("AT615")) {
set = (130.00 * quant) + set;
} else if (odd.equals("AT616")) {
set = (40.04 * quant) + set;
} else if (odd.equals("AT617")); {
set = (13.00 * quant) + set;
}
}
return set;
}
}
我尝试了一些不同的方法。我让它从主代码中获取变量集,但这不起作用,因为即使我将 0 发送到班级,它仍然设置...设置(对不起那个变量名)在 13。我试着摆脱+set 在最后,但这不起作用,因为它只是打印出 13 作为订单成本,即使我输入了应该调用 50.03 价格的字符串。我更改了匹配价格以查看会发生什么,我意识到它正在使用 AT617 从代码的最后一行中提取设置变量的数字,但我不知道它为什么这样做或如何修复它。非常感谢您的帮助。
【问题讨论】:
-
如果您能格式化所有这些 if 语句将会非常有帮助...拜托。
-
就是
else if(odd.equals("AT417"));行上的那个分号 -
那个 if 语句是可憎的 :( 请更好地格式化它。还可以考虑使用枚举或其他东西来旧你的文字。
-
不知道你是怎么抓到那个格斯的,但是很好!
-
请注意,您仍然可能最终没有初始化
set,因为这些内部块仍然没有最终的无条件else。例如,当g是3,但odd不等于 AT613、AT614、AT615、AT616 或 AT617 时会发生什么?
标签: java class variables methods