【问题标题】:how can i print this using String Methods我如何使用字符串方法打印它
【发布时间】:2014-08-30 15:37:19
【问题描述】:

给定一个String,返回一个由chars 组成的String,位于索引0、1、4、5、8、9...所以“kittens”产生“kien”。

class FirstLastStr {
    public String altPairs(String str) {
        return str.substring(0, 2) 
                + str.substring(4, 6) 
                + str.substring(8, 10); //This part will throw string out of bound
    }
}

【问题讨论】:

  • 发布你的作业做得很好。你这样做有什么问题?

标签: java string


【解决方案1】:

您似乎正试图从包含 7 个字符的字符串中返回字符 8 和 9。您只需在尝试操作之前检查字符串长度

StringBuilder sb = new StringBuilder();

if (str.size() > 2) {
    sb.append(str.substring(0,2));
}

if (str.size() > 6) {
    sb.append(str.substring(4,6));
}

if (str.size() > 10) {
    sb.append(str.substring(8,10));
}

return sb.toString();

不是最有效的代码,但这将适合您的特定场景。

【讨论】:

    【解决方案2】:

    试试这个:

    class FirstLastStr 
    {
        public String altPairs(String str) 
        {
            char[] arr = {str.charAt(0), str.charAt(1),str.charAt(4), str.charAt(5), str.charAt(8), str.charAt(9)};
    
            return new String(arr) ;
        }
    }
    

    【讨论】:

      【解决方案3】:

      如果你想要的是一个函数,它在一个字符串中获取两个字符,然后再跳过 2 个,并将输出作为字符串返回,你想要这个:

      public class FirstLastStr {
          public String altPairs(String str) 
          {
              StringBuilder result = new StringBuilder();
      
              for (int current_char = 0; current_char + 2 <= str.length(); current_char += 4) {
                  result.append(str.substring(current_char, current_char + 2));
              }
      
              return result.toString();
          }
      }
      

      这将为任意长度的字符串返回正确的输出。

      示例输出:

      'kittens' -> 'kien'
      'cat' -> 'ca'
      'at' -> 'at'
      'a' -> ''
      '' -> ''
      '01234567890123456789' -> '0145892367'
      

      【讨论】:

        【解决方案4】:

        感谢您的所有回答。 当我尝试时,我得到了我的问题的答案。 很抱歉上传迟了,但还有很多其他方法可以做到这一点。 这是我的答案。

        String res = "";
            public String altPairs(String str) {
                int i=0;
                while (i<str.length()) {
                    res +=str.charAt(i);
                    i=i+1;
                    if(i<str.length()) {
                        res+=str.charAt(i);
                        i=i+3;
                    }
                }
                return res;
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-12-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-10
          • 1970-01-01
          相关资源
          最近更新 更多