需要将字符串的每个其他字符存储到另一个字符串中

时间:2013-11-04 15:13:49

标签: java string char

    public class newString {
   public static void main (String args[]){
      String title = "Book";
      String title1;
      title1 = title;

      for(int i = 0; i < title.length(); i++){
         for (int x = 0; x<title1.length(); x++){
            if (title.charAt(i+x) == title1.charAt(x)){
               System.out.print(title.charAt(0,1));
            }
         }
      }
   }
}

我真的不明白我在这里做错了什么。我需要做的是定义一个名为“title”的字符串,其中包含“Book”,我做了,并创建了第二个名为“title1”的字符串。我需要创建代码来将title的内容存储到title1中,但只能创建其他所有字符。例如:title1应该包含“Bo”。我做错了什么?

3 个答案:

答案 0 :(得分:4)

这是循环解决方案,操作更少。而不是检查我是否是偶数,只需增加2。

String title1 = "Some title";
String title2 = "";
for (int i = 0; i < title1.length(); i += 2)
{
  title2 += title1.charAt(i);
}

答案 1 :(得分:1)

你的算法是错误的,你需要做的就是从源字符串中提取出每个第n个字符,例如:

String source = "Book";

最终结果应为“Bo”

算法应该是:

  1. 遍历原始字符串中的每个字符,根据需要使用步幅,在这种情况下,应该执行2步(所以不要增加1,增加所需的步幅)
  2. 获取该索引处的字符并将其添加到第二个字符串
  3. 最终结果应该是一个包含每个第n个字符的字符串。

答案 2 :(得分:0)

我真的不明白你在尝试什么,但我可以告诉你你在做什么。您的循环结构执行以下操作:

  • 当i = 0时,它会比较两个字符串中的所有字符(0 + n = n,因此内部循环来自x - title1.length())。
  • 当i = 1时,比较除第一个之外的所有字符(对于大小x,1 + n = x - 1比较)。
  • 当i = 2时,比较x / 2个字符(对于大小x,2 + n = x / 2)
  • 当i = 3时,比较x / 3个字符
  • ......等等
  • System.out.print(title.charAt(0,1))甚至不应该编译。 charAt(int)是正确的电话。如果标题长度大于0,则始终会打印带有单个字符的字符串 - 标题中的第一个字符串。除非你将标题重新分配给不同的字符串,否则它将始终相同。

当i = title.length() - 1和x&gt;时,此代码始终title.charAt(i+x)处抛出IndexOutOfBoundsException。 0