布尔方法不检查 if 语句
Boolean method is not checking if statment
我正在尝试编写布尔方法,但它不起作用
public boolean addPresent(Present present)
{
if(totWeight+present.getWeight()<=maxWeight)
{
presents.add(present);
presents1.add(present);
return true;
}
for(Present pres : presents1)
{
totWeight+=pres.getWeight();
}return false;
}
如果我写这个方法就可以了:
public void addPresent(Present present)
{
if(totWeight+present.getWeight()<=maxWeight)
{
presents.add(present);
presents1.add(present);
System.out.println("true");
}else
{ System.out.println("false");
}
for(Present pres : presents1)
{
totWeight+=pres.getWeight();
}
}
我应该如何为它创建布尔方法?
我注意到的主要区别是,当您 return true
时,它不会向 totWeight
添加任何内容。我还认为您想用
之类的东西重置 total
public boolean addPresent(Present present) {
boolean r = false;
if (totWeight + present.getWeight() <= maxWeight) {
presents.add(present);
presents1.add(present);
r = true;
}
totWeight = 0; // <-- reset total.
for (Present pres : presents1) {
totWeight += pres.getWeight();
}
return r;
}
您需要在 for 循环之前 return false,或者将 for 循环包含在您检查权重是否小于 maxWeight 的条件中。
或者你可以直接把礼物的重量加到totWeight上,不需要for循环。
public boolean addPresent(Present present){
if(totWeight+present.getWeight()<=maxWeight){
presents.add(present);
presents1.add(present);
totWeight += present.getWeight();
return true;
}
return false;
}
在清理格式并比较您描述的两种方法后,我注意到一个主要的逻辑错误。
在第一种方法中,您执行以下操作:
如果为真,return 为真并停止 运行 方法的其余部分。 -
如果为假,则添加所有当前权重和 return false
在第二种方法中,您执行以下操作:
如果为真,return 为真并保留 运行 方法的其余部分。 -
如果为假,则添加所有当前权重和 return false
如果第一种方法是您想要的方法,请在方法的开头声明一个布尔值,并根据测试结果将其设置为 true 或 false,return 改为该布尔值.这样你就可以推迟实际的 return 语句,直到你完成计算。
public boolean addPresent(Present present)
{
boolean temp = false;
if(totWeight+present.getWeight()<=maxWeight)
{
presents.add(present);
presents1.add(present);
temp = true;
}
for(Present pres : presents1)
{
totWeight+=pres.getWeight();
}
return temp;
}
我正在尝试编写布尔方法,但它不起作用
public boolean addPresent(Present present)
{
if(totWeight+present.getWeight()<=maxWeight)
{
presents.add(present);
presents1.add(present);
return true;
}
for(Present pres : presents1)
{
totWeight+=pres.getWeight();
}return false;
}
如果我写这个方法就可以了:
public void addPresent(Present present)
{
if(totWeight+present.getWeight()<=maxWeight)
{
presents.add(present);
presents1.add(present);
System.out.println("true");
}else
{ System.out.println("false");
}
for(Present pres : presents1)
{
totWeight+=pres.getWeight();
}
}
我应该如何为它创建布尔方法?
我注意到的主要区别是,当您 return true
时,它不会向 totWeight
添加任何内容。我还认为您想用
total
public boolean addPresent(Present present) {
boolean r = false;
if (totWeight + present.getWeight() <= maxWeight) {
presents.add(present);
presents1.add(present);
r = true;
}
totWeight = 0; // <-- reset total.
for (Present pres : presents1) {
totWeight += pres.getWeight();
}
return r;
}
您需要在 for 循环之前 return false,或者将 for 循环包含在您检查权重是否小于 maxWeight 的条件中。 或者你可以直接把礼物的重量加到totWeight上,不需要for循环。
public boolean addPresent(Present present){
if(totWeight+present.getWeight()<=maxWeight){
presents.add(present);
presents1.add(present);
totWeight += present.getWeight();
return true;
}
return false;
}
在清理格式并比较您描述的两种方法后,我注意到一个主要的逻辑错误。
在第一种方法中,您执行以下操作:
如果为真,return 为真并停止 运行 方法的其余部分。 - 如果为假,则添加所有当前权重和 return false
在第二种方法中,您执行以下操作:
如果为真,return 为真并保留 运行 方法的其余部分。 - 如果为假,则添加所有当前权重和 return false
如果第一种方法是您想要的方法,请在方法的开头声明一个布尔值,并根据测试结果将其设置为 true 或 false,return 改为该布尔值.这样你就可以推迟实际的 return 语句,直到你完成计算。
public boolean addPresent(Present present)
{
boolean temp = false;
if(totWeight+present.getWeight()<=maxWeight)
{
presents.add(present);
presents1.add(present);
temp = true;
}
for(Present pres : presents1)
{
totWeight+=pres.getWeight();
}
return temp;
}