如何将数字字符串转换为单独的数字并在Java中将它们一起添加?

时间:2016-11-30 04:22:10

标签: java string integer digits

我对编码很新,我需要一些帮助。我尝试做的是让用户输入这种类型的表达式:+(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);
    }

4 个答案:

答案 0 :(得分:0)

尝试suma += criterio.charAt(1) - '0';
原因是:'1',即字符,与整数1不同。检查ASCII表,你会看到我在说什么。

答案 1 :(得分:0)

添加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);
    }

答案 2 :(得分:0)

在Java中,char是一个整数,这意味着它具有整数值,并且可以在算术表达式中转换为int。

  • '1'等于49
  • '2'等于50
  • '3'等于51

49,50和51的sume是150!

您可以使用Character.getNumericValue()为这些字符获取正确的值。

suma += Character.getNumericValue(criterio.charAt(i));

答案 3 :(得分:0)

当数字大于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();