【问题标题】:Wrong answer with Addition加法错误答案
【发布时间】:2020-02-12 14:22:42
【问题描述】:
public class Container {
    private int value;
    public Container(int value){
        this.value=value;
    }
    public int getValue(){
        return this.value;
    }
    public int sum(Container c){
        return this.value+c.getValue();
    }
    public void main(){
        Container c1=new Container(1);
        Container c2=new Container(2);
        System.out.println("sum: " + c1.getValue()+c2.getValue());
        System.out.println("sum: " + c1.sum(c2));
    }
}

当我运行此代码时,我得到以下结果:

sum: 12
sum: 3

预计是:

sum: 3
sum: 3

有人知道我为什么会得到这些结果吗?

【问题讨论】:

  • 你的第一个总和不是整数总和,而是字符串连接。

标签: java oop object


【解决方案1】:

当您将+ 运算符与String 一起使用时,它会将其视为连接,而不是加法,并且Java 从左到右评估操作,因此"sum: " + c1.getValue()+c2.getValue() 被评估为

"sum: " + 1 + 2
"sum: 1" + 2
"sum: 12"

如果要先进行整数加法,则需要添加括号:

System.out.println("sum: " + (c1.getValue() + c2.getValue()));

【讨论】:

  • 另一种选择是单独计算数值,并将其存储在int 变量中:int sum = c1.getValue() + c2.getValue(); 然后在下一行,打印出来:System.out.println("sum: " + sum);。使用调试器时,像这样分解事情很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多