将'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);
}
}
我正在创建一个具有附加功能的 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);
}
}