这是我正在参加的一个介绍编程课程。我创建了一个Instance方法来向总计中添加newValue
。
它在方法中有两个参数:
(标明金额类型和金额的字母)
我在第一个参数上取得了成功。
第二是让我挣扎。我想我们是if声明。我这样做了有数量类型,然后我有三个字母可供使用,这可能是真的。我设置if(amountType == false)
,编译器说它是一个"无法访问的语句"。
if语句的标准是"如果该数量的字母无效(即不是T,D或E),则抛出IllegalArgumentException,并将消息返回给用户。
public double newValue(boolean amountType, double amount)
{
boolean T = amountType;
boolean D = amountType;
boolean E = amountType;
if (amount < 0)
{
throw new IllegalArgumentException("The amount needs to be 0 or larger");
}
return amount;
if(amountType == false)
// if not D, E, T.....then exception
{
throw new IllegalArgumentException("That is an invalid letter value. "
+ "The data will be ignored");
}
else
{
}
}
任何帮助都将不胜感激。
答案 0 :(得分:2)
您的return
声明正在阻碍:一旦执行,之后落下的任何代码都将无法执行。它必须是在您的方法中执行的最后一条指令(不是字面意思)。你可以这样做:
public double newValue(boolean amountType, double amount) {
boolean T = amountType;
boolean D = amountType;
boolean E = amountType;
if (amount < 0) // Eliminate constraint 1
throw new IllegalArgumentException("The amount needs to be 0 or larger");
if (!amountType) // Eliminate constraint 2
throw new IllegalArgumentException("That is an invalid letter value. "
+ "The data will be ignored");
// Do your processing, now that you passed all tests
return amount;
}
答案 1 :(得分:1)
您必须将return amount
放在第一个if
块中。
原因是,如果第一个if
条件为true
,则会抛出异常。如果评估为false
,则会执行return amount
。
在这两种情况下,永远不会执行第二个if
块
答案 2 :(得分:0)
无法访问意味着在此方法中永远无法访问该行。 因为你添加了return语句而没有if语句,你的第二个if语句永远不会被程序执行。 所以在你的第一个if语句中移动return语句,它会起作用。
答案 3 :(得分:0)
您有一个返回金额对帐单,它始终执行,后面的代码,即if语句无法访问,因为控件始终从返回金额返回。 一种可能的解决方案是首先必须检查金额类型,然后在其他部分检查金额&lt; 0语句和结束返回它。