繁体   English   中英

如何将数字字符串转换为单独的数字并将其添加到Java中?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM