Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 向在字符串中添加数字和的方法添加起始点和停止点参数_Java - Fatal编程技术网

Java 向在字符串中添加数字和的方法添加起始点和停止点参数

Java 向在字符串中添加数字和的方法添加起始点和停止点参数,java,Java,我试图修改标记为duplicate的帖子中的一个方法,该方法允许我输入一个包含数字的字符串,比如“hereare77 with88 monsters”,如果我计算整个字符串,我会将字符串中的数字之和相加,返回14和16。如何增强此方法以计算字符串中的起始点和停止点?所以如果我想评估位置3到10,它只会返回14,因为77是位置3和10之间的数字 我已经做了很多研究,但我对Java还很陌生,还不知道如何解决这个问题。下面的代码就是我现在的位置: String s = "Here are77

我试图修改标记为duplicate的帖子中的一个方法,该方法允许我输入一个包含数字的字符串,比如“hereare77 with88 monsters”,如果我计算整个字符串,我会将字符串中的数字之和相加,返回14和16。如何增强此方法以计算字符串中的起始点和停止点?所以如果我想评估位置3到10,它只会返回14,因为77是位置3和10之间的数字

我已经做了很多研究,但我对Java还很陌生,还不知道如何解决这个问题。下面的代码就是我现在的位置:

    String s = "Here are77 with 88 monsters";
    String[] st = s.split(" ");
    for (int i=0 ; i<st.length ; i++) {
        if (st[i].matches("[0-9]+")) {
            String[] c = st[i].split("(?=\\d)");
            int sum = 0;
            for(int j=0 ; j<c.length ; j++) {
                sum += Integer.parseInt(c[j]);
            }
          return sum;} 
        }
String s=“这里有77个怪物和88个怪物”;
字符串[]st=s.split(“”);

对于(inti=0;i您的实际代码工作不好,可能的重复太复杂了


  • 字符串中的数字总和

    • 删除所有不是数字的字符
    • 把它们分开
    • 对它们进行分析和求和

      static int sumstring(String s) {
          String[] st = s.replaceAll("\\D", "").split("");
          int sum = 0;
          for (String digit : st) {
              sum += Integer.parseInt(digit);
          }
          return sum;
      }
      
  • 带开始和停止的
    字符串中的数字总和

    • 方法1。并添加
      substring()
      方法

      static int sumstring(String s, int start, int stop) {
          s = s.substring(start, stop);
          String[] st = s.replaceAll("\\D", "").split("");
          int sum = 0;
          for (String digit : st) {
              sum += Integer.parseInt(digit);
          }
          return sum;
      }
      

  • 要获取和(每个数字)的数组,请执行以下操作:

    static int[]sumstring(字符串s){
    字符串[]st=s.replaceAll(“\\D”,”).trim().split(“\\s+”);
    System.out.println(Arrays.toString(st));
    int[]总和=新的int[st.length];
    for(int i=0;i

  • 将数字替换为其位数之和

    static String sumstring(String s) {
        String[] st = s.split("\\s+");
        for (int i = 0; i < st.length; i++) {
            String word = st[i];
            if (word.matches("^[0-9]+$")) {
                int sum = 0;
                for (String digit : word.split("")) {
                    sum += Integer.parseInt(digit);
                }
                st[i] = "" + sum;
            }
        }
        return String.join(" ", st);
    }
    
    静态字符串sumstring(字符串s){
    字符串[]st=s.split(\\s+);
    对于(int i=0;i

  • 您的实际代码不能很好地工作,并且可能的副本太复杂了


  • 字符串中的数字总和

    • 删除所有不是数字的字符
    • 把它们分开
    • 对它们进行分析和求和

      static int sumstring(String s) {
          String[] st = s.replaceAll("\\D", "").split("");
          int sum = 0;
          for (String digit : st) {
              sum += Integer.parseInt(digit);
          }
          return sum;
      }
      
  • 带开始和停止的
    字符串中的数字总和

    • 方法1。并添加
      substring()
      方法

      static int sumstring(String s, int start, int stop) {
          s = s.substring(start, stop);
          String[] st = s.replaceAll("\\D", "").split("");
          int sum = 0;
          for (String digit : st) {
              sum += Integer.parseInt(digit);
          }
          return sum;
      }
      

  • 要获取和(每个数字)的数组,请执行以下操作:

    static int[]sumstring(字符串s){
    字符串[]st=s.replaceAll(“\\D”,”).trim().split(“\\s+”);
    System.out.println(Arrays.toString(st));
    int[]总和=新的int[st.length];
    for(int i=0;i

  • 将数字替换为其位数之和

    static String sumstring(String s) {
        String[] st = s.split("\\s+");
        for (int i = 0; i < st.length; i++) {
            String word = st[i];
            if (word.matches("^[0-9]+$")) {
                int sum = 0;
                for (String digit : word.split("")) {
                    sum += Integer.parseInt(digit);
                }
                st[i] = "" + sum;
            }
        }
        return String.join(" ", st);
    }
    
    静态字符串sumstring(字符串s){
    字符串[]st=s.split(\\s+);
    对于(int i=0;i

  • 你的循环在i++上不是有死代码吗?因为你的第一次迭代完成后就将返回。

    你的循环在i++上不是有死代码吗?因为你的第一次迭代完成后就将返回。

    这是我从你上一篇文章中总结出来的代码,基本内容如下:

    public class AddDigitsInString
    {
    
        public static void main(String[] args)
        {
            String input = "Here are77 with 88 monsters";
            System.out.println("Input: " + input);
    
            String curNumber = "";
            for(Character c: input.toCharArray())
            {
                if(Character.isDigit(c))
                {
                    curNumber = curNumber + c;
                }
                else
                {
                    if (curNumber != "")
                    {
                        int curSum = sum(curNumber);
                        System.out.println("Number: " + curNumber + ", Sum: " + curSum);
                        curNumber = "";
                    }
                }
            }
            if (curNumber != "")
            {
                int curSum = sum(curNumber);
                System.out.println("Number: " + curNumber + ", Sum: " + curSum);
            }
        }
    
    
        public static int sum(String number)
        {
            int total = 0;
            for(char c: number.toCharArray())
            {
                total = total + Character.getNumericValue(c);
            }
            return total;
        }
    
    }
    
    输出:


    以下是我从您上一篇文章中获得的代码,可以归结为最基本的内容:

    public class AddDigitsInString
    {
    
        public static void main(String[] args)
        {
            String input = "Here are77 with 88 monsters";
            System.out.println("Input: " + input);
    
            String curNumber = "";
            for(Character c: input.toCharArray())
            {
                if(Character.isDigit(c))
                {
                    curNumber = curNumber + c;
                }
                else
                {
                    if (curNumber != "")
                    {
                        int curSum = sum(curNumber);
                        System.out.println("Number: " + curNumber + ", Sum: " + curSum);
                        curNumber = "";
                    }
                }
            }
            if (curNumber != "")
            {
                int curSum = sum(curNumber);
                System.out.println("Number: " + curNumber + ", Sum: " + curSum);
            }
        }
    
    
        public static int sum(String number)
        {
            int total = 0;
            for(char c: number.toCharArray())
            {
                total = total + Character.getNumericValue(c);
            }
            return total;
        }
    
    }
    
    输出:


    我非常感谢您的反馈。我正在尝试确定如何在数组中实现起始点和停止点,以完成相关文章中的输出。使用您在上一个问题中发布的代码…您可以通过迭代字符串并询问每个字符是否是带有isDigit()函数。同样在您的PAQ中,查看getNumbers()函数函数在我的帖子中。它找到所有的数字并返回到一个列表中。我非常感谢您的反馈。我正在尝试确定如何在数组中实现开始点和停止点,以完成相关帖子中的输出。使用您在上一个问题中发布的代码…您可以通过itera确定开始点/停止点通过character.isDigit()函数检查字符串并询问每个字符是否为数字。同样在PAQ中,请查看getNumbers()函数。它找到所有的数字并返回到一个列表中。我想他希望函数返回一个包含以下所有数字总和的整数数组,正如他所说的,他的示例应该返回14(7+7)和16(8+8)。也许我理解错了。你怎么做你添加的(并且编码得更好)还有保留字符吗?所以如果我输入“I77有2个熊”并想从1到9进行计算,它会返回“14有2”?我可能把这个问题弄得太复杂了,但解决方案是解析出数字的加法,保持它们的位置,然后解析出字符并以某种方式将两者合并在一起吗?(我刚刚开始学习正则表达式是如何工作的)谢谢JohnDarls。非常感谢大家的专业知识。@JohnDarls np,您现在可以考虑投票赞成/接受这个问题了;)我想他希望函数返回一个整数数组,其中包含以下所有数字的总和,正如他所说的,他的示例应该返回14(7+7)和16(8+8)。也许我理解错了。呵呵