1
    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”的字符串。我需要创建代码来将标题的内容存储到 title1 中,但仅限于其他每个字符。例如:title1 中应该有“Bo”。我究竟做错了什么?

4

3 回答 3

5

这是操作较少的循环解决方案。无需检查 i 是否为偶数,只需增加 2。

String title1 = "Some title";
String title2 = "";
for (int i = 0; i < title1.length(); i += 2)
{
  title2 += title1.charAt(i);
}
于 2013-11-04T15:25:08.983 回答
1

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

String source = "Book";

最终结果应该是“Bo”

算法应该是:

  1. 遍历原始字符串中的每个字符,根据需要使用步幅,在这种情况下,步幅应该为 2(所以不是增加一个,而是增加所需的步幅)
  2. 获取该索引处的字符并将其添加到您的第二个字符串

最终结果应该是一个包含每个第 n 个字符的字符串。

于 2013-11-04T15:21:28.317 回答
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 > 0 时,此代码将始终抛出 IndexOutOfBoundsException 。title.charAt(i+x)

于 2013-11-04T15:29:32.963 回答