[英]How do I convert a String of digits into separate digits and add them together in Java?
我对编码有点陌生,需要一些帮助。 我正在尝试做的是使用户输入以下类型的表达式:+(1 2 3)。 它应该返回(1 + 2 + 3)->6。但是,由于某种原因,它返回“ 150”。
该代码是西班牙语,但是,它很容易理解。 忽略其他所有声明的变量。
public void evaluar(){
// TODO Arreglar suma
Visualizador v = new Visualizador();
Node n = new Node();
String criterio = "";
criterio = v.DarExp("Ingrese la expresion");
int total = 0;
int suma = 0;
int resta = 0;
int multiplicacion = 1;
int division = 1;
if (criterio.charAt(0) == '+'){
criterio = criterio.replace("(", "");
criterio = criterio.replace(")", "");
criterio = criterio.replace("+", "");
criterio = criterio.replace(" ", "");
total = Integer.parseInt(criterio);
System.out.println(total);
for (int i = 0; i < criterio.length(); i++){
suma += criterio.charAt(i);
}
System.out.println(suma);
}
试试suma += criterio.charAt(1) - '0';
原因是:字符'1'
与整数1
不同。 检查ASCII表,您将看到我在说什么。
它正在添加char的ascii值
考虑
String criterio = "+123";
if (criterio.charAt(0) == '+'){
criterio = criterio.replace("(", "");
criterio = criterio.replace(")", "");
criterio = criterio.replace("+", "");
criterio = criterio.replace(" ", "");
int suma = 0;
for (int i = 0; i < criterio.length(); i++){
suma += criterio.charAt(i) - '0';
}
System.out.println(suma);
}
在Java中, char
是整数,这意味着它具有整数值,可以在算术表达式中转换为int。
'1'
等于49 '2'
等于50 '3'
等于51 而49、50和51的总和就是150!
您可以使用Character.getNumericValue()
获取这些字符的正确值。
suma += Character.getNumericValue(criterio.charAt(i));
当数字大于10时,您的解决方案将失败。
尝试split
的" "
和和令牌:
String criterio = "+(1 2 3)";
int suma = 0;
if (criterio.charAt(0) == '+'){
criterio = criterio.replace("(", "");
criterio = criterio.replace(")", "");
criterio = criterio.replace("+", "");
String[] tokens = criterio.split(" ");
for (String s : tokens) {
suma += Integer.parseInt(s);
}
System.out.println(suma);
}
或更适合Java 8:
suma = Arrays.stream(tokens).mapToInt(Integer::parseInt).sum();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.