将'string'改为'int',实现两数相加

Changing 'string' to 'int' to carry out addition of two numbers

我正在创建一个具有附加功能的 java 网络服务。我假设将 1 + 1 的总和作为“2”而不是“11”。我该怎么做才能解决这个错误?

这是我的代码:

Addition.java

public class Addition {

private String firstNumber, secondNumber, sum;

public Addition(String firstNumber, String secondNumber, String sum) {
    this.firstNumber = firstNumber;
    this.secondNumber = secondNumber;
    this.sum = firstNumber+secondNumber;
}

public String getFirstNumber() {
    return firstNumber;
}

public void setFirstNumber(String first) {
    this.firstNumber = first;
}

public String getSecondNumber() {
    return secondNumber;
}

public void setSecondNumber(String second) {
    this.secondNumber = second;
}

public String getSum() {
    return sum;
}

public void setSum(String sum) {
    this.sum = sum;
}

@Override
public String toString() {
    return "Addition [firstNumber=" + firstNumber + ", secondNumber=" + 
    secondNumber + ", sum=" + sum + "]";
}

AdditionController.java

@RestController
public class AdditionController {

private static final String template = " %s";

@RequestMapping("/addition")
@ResponseBody 
public Addition addition (
        @RequestParam(value="firstNumber", defaultValue="1") String firstNumber,
        @RequestParam(value="secondNumber", defaultValue="1") String secondNumber,
        @RequestParam(value="sum", defaultValue="2") String sum){
         return new Addition(
            String.format(template, firstNumber),
            String.format(template, secondNumber),
            String.format(template, sum));
   }  
}

我无法将 'string' 更改为 'int',因为如果我尝试这样做,我会遇到更多错误。有人请帮助我。非常感谢您。

如果您不想更改任何定义,那么只是为了变通尝试只更改这一行:

this.sum = firstNumber+secondNumber; 

this.sum = String.valueOf(Integer.parseInt(firstNumber.trim())+Integer.parseInt(secondNumber.trim()));

不要忘记处理异常。

N.B.: 这不是正确的方法。解决办法。

正如其他人已经在评论中指出的那样,如果你想对 int 值求和,你必须 parse String(s) 到 int(s) 某处;你可以在构造函数中这样做。我在下面提供了一个几乎下降的替换 - 但是,我认为将 sum 传递到 class 没有意义(或为总和提供直接突变器);相反,我会重新计算第一个或第二个数字的更新。喜欢,

public class Addition {
    private int firstNumber, secondNumber, sum;

    public Addition(String firstNumber, String secondNumber) {
        this.firstNumber = Integer.parseInt(firstNumber.trim());
        this.secondNumber = Integer.parseInt(secondNumber.trim());
        updateSum();
    }

    public int getFirstNumber() {
        return firstNumber;
    }

    public void setFirstNumber(int firstNumber) {
        this.firstNumber = firstNumber;
        updateSum();
    }

    public int getSecondNumber() {
        return secondNumber;
    }

    public void setSecondNumber(int secondNumber) {
        this.secondNumber = secondNumber;
        updateSum();
    }

    public int getSum() {
        return sum;
    }

    private void updateSum() {
        this.sum = this.firstNumber + this.secondNumber;
    }

    @Override
    public String toString() {
        return String.format("Addition [firstNumber=%d, secondNumber=%d, sum=%d%n", //
                firstNumber, secondNumber, sum);
    }
}