【问题标题】:String with numbers add them Java [closed]带有数字的字符串将它们添加到Java [关闭]
【发布时间】:2015-04-27 12:04:26
【问题描述】:

我得到一个包含数字的字符串,

例如:- 123312351863

将每个数字分开并将它们相加的最佳方法是什么?

例如总数38

【问题讨论】:

  • 哦,请在这里发布您的努力.. 拥有 1k+ 的声誉,为什么这种低质量的帖子?
  • 哈希:你不能。例如,第一个数字可以是 1,也可以是 12,或 123,或 ....

标签: java string


【解决方案1】:

我不会给你确切的答案

  1. 使用 Integer.parseInt()Long.parseLong() 将整个字符串解析为整数。基于适当的尺寸
  2. 您可以使用以下 2 个运算符添加每个数字 -> /%
  3. 您还需要一个while 循环。

注意:对于非常大的数字或数字以0 开头的情况,此方法会失败。您确实可以使用charAt() + 其他一些字符串方法来做到这一点。

【讨论】:

  • 加 1 虽然考虑到上下文我不会费心回答。
  • 对于大于 2^31 的值失败
  • 那么,如果第一个数字是 12 而不是 1 怎么办?还是1233,就此而言?这可能是正确的,也可能是不完整的,具体取决于 OP 可以(应该)提供的其他信息
  • Long.parseLong() 对于大于 2^63 的值仍然失败
  • @amit - 当然。我只是向他展示了一个简单的方法。他可以使用for 循环并迭代 char 数组并继续将值转换为int 并添加它们。
【解决方案2】:
public class Simple {
    public static void main(String `args`[]){  
        String str = "123456789";
        Integer total = 0;
        for (Character eachNumber : str.toCharArray()) {
            total += Integer.parseInt(eachNumber.toString());
        }
        System.out.println(total);
    }
}

【讨论】:

    【解决方案3】:

    Java 8 中的捷径:

    String s = "123312351863";
    int sum = s.chars().map(Character::getNumericValue).sum();
    

    【讨论】:

      【解决方案4】:

      试试这样:

      int res = 0;
      String s= "123312351863";
      
      for (int i = 0; i < s.length(); i++) 
      {
          String str= ""+s.charAt(i);
          int b =  Integer.parseInt(str);
          res = res + b;
      }
      
      System.out.println(res);
      

      【讨论】:

      • 这是不可接受的。这个问题值得得到这个答案吗?
      • 我赞成这个答案不是因为要补偿反对票,而是当我指向 uparrow 时,这个答案很有用,因为鼠标悬停说
      【解决方案5】:

      您可以先使用String.split("") 将字符串拆分为单个字符(请注意,对于java8 之前的版本,它会在开头给出一个空字符串)

      然后,迭代String[]parse each number to int,并对它们求和

      【讨论】:

        【解决方案6】:

        您可以通过 "" 拆分字符串,然后将每个字符串转换为 Integer 并对数字求和。例如。在 Java 8 中

         System.out.println(Stream.of(s).map(x -> x.split("")).flatMap(Arrays::stream).mapToInt(Integer::parseInt).sum());
        

        输出

        38
        

        【讨论】:

        • 我不是反对者。否决票没有严格的规则。如果有人认为答案很有用,请投赞成票,否则投反对票。我会赞成你的答案,但我的机器中没有 java 8。所以无法测试你的代码
        • @SpringLearner 你可以在这里查看输出tryjava8.com/app/snippets/553e2b0ce4b0d45eaf6fb45f,无需安装。 B/w 如果有人解释他们为什么投反对票,那总是很好。
        • 是的,如果他们给出任何理由会很好,但不幸的是他们没有。
        • 你给的链接失效了
        • @试试这个ideone.com/G3cyE5
        【解决方案7】:

        你也可以这样做

        1. 使用loopchatAt() 遍历字符串的字符。
        2. 使用 Character.getNumericValue(yourChar) 将字符转换为 int 值。
        3. 然后对 int 值求和。

        【讨论】:

          【解决方案8】:

          我会尝试如下

          public static void main(String args[])
          {
              String x="123312351863";
              String r[]=x.split("");int sum=0;
              for(int i=1;i<=x.length();i++)
              {
          
                  sum+=Integer.parseInt(r[i]);
              }
              System.out.println(sum);
          }
          

          【讨论】:

          • 没有投反对票,但这里所有“仅代码”的答案都投反对票。仅回答代码的实际教学价值很小,它是给 OP 一条鱼,而不是教他如何钓鱼。
          • @amit 这是一个简单的答案,如果这是一个新来者或代表低的问题,我不会回答。但是 OP 有大量的代表。
          • 这个问题不值得完整回答。拥有 7k+ 的声誉,您应该知道这一点。
          猜你喜欢
          • 2012-11-06
          • 2010-12-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-30
          • 2020-12-05
          相关资源
          最近更新 更多