编写一个返回字符串偶数索引的方法

时间:2014-10-16 05:03:45

标签: java string methods

所以我应该写一个只打印出字符串偶数索引的方法。例如,如果我在控制台/扫描仪中输入“Hiejlzl3ow”,我想返回“Hello”。我通过使用for循环和charAt(i)得到了解决方案,但是我无法将结果作为String返回(因为它是一个char)。我尝试使用String.valueOf转换charAt(i),但它只打印出第一个(或更确切地说是0)索引值(在本例中为 H )。有人有快速解决这个问题吗?还有一个更简单的解决方案吗? (注意:这是从java开始的,因此只允许使用for循环,字符串方法和扫描程序。)

//This method prints out the even indexes of a string
public static String decrypt(String question, Scanner console)
{
  System.out.print(question + " ");
  String s = console.nextLine();
  for (int i = 1; i < s.length()-1; i=i+2)
  {
     char x = (s.charAt(i));
     s = String.valueOf(x);

  }
return s;
}

8 个答案:

答案 0 :(得分:1)

首先,String索引从0开始。因此在for循环中你需要将i值设置为0.代码中的第二个错误是你修改字符串&#39; s&#39; for循环中的值。这就是为什么你得到的原因&#39; i&#39;作为输出。

尝试以下代码,您将获得预期的输出

   //This method prints out the even indexes of a string
public static String decrypt(String question, Scanner console)
{
  String str = "";
  System.out.print(question + " ");
  String s = console.nextLine();
  for (int i = 0; i < s.length(); i=i+2)
  {
     char x = (s.charAt(i));
     str  = str + String.valueOf(x);

  }
return str;
}

答案 1 :(得分:0)

您可以使用StringBuilder

StringBuilder sb = new StringBuilder();

// ...

sb.append(x);

// ...

String result = sb.toString();

答案 2 :(得分:0)

请尝试以下代码:

public static String decrypt(String question, Scanner console)
    {
      System.out.print(question + " ");
      String s = console.nextLine();
      StringBuilder builder=new StringBuilder("");
      for (int i = 0; i < s.length(); i++)
      {
          if(i%2==0){
              builder.append(s.charAt(i));
          }
      }
    return builder.toString();
    }

输入:

Hello World

输出

HloWrd

有关StringBuilder访问this链接的更多信息。

答案 3 :(得分:0)

java中的数组是基于零的。所以你应该用0:

开始索引
for (int i = 0; i < s.length()-1; i=i+2)
             ^^

答案 4 :(得分:0)

您应该使用i=o初始化数组并使用i < s.lenght()作为条件来迭代完整的字符串。

答案 5 :(得分:0)

String blah = "hbellalho";
String evenIndices;
for (int i = 0; i < blah.length; i++) {
    if (i % 2 != 0) {
        evenIndices += blah.getCharAt(i);
    }
}
return evenIndices;

您的主要问题是您正在修改原始字符串。你需要另一个(甚至更好的,一个StringBuilder,虽然为了简单起见我没有包含它),只能保存偶数值。

当您在Java中使用String执行+ =时,请记住它每次都会创建一个新的String对象,因此在具有大型迭代的循环中这不是很好。

答案 6 :(得分:0)

因为你是初学者,你的问题很明显。让我解释一下

  • 在java中,字符串起始索引从ZERO(0)开始,但您在for循环中使用int i=1
  • 使用i < s.length()i <= s.length()
  • 第三,当你从输入字符串中取出一个字符时,你将它转换成一个字符串并将其分配给它的变量,因为自Strings are immutable in Java以来只有最后一个处理过的字符保留在字符串中。因此,您必须连接到目前为止处理的String中的每个新字符。
  • 这个只是为了优化(您可以跳过它作为初学者),您可以使用StringBUffer或StringBuilder类,这样每次将字符连接到String时都不会创建新对象。

You can read more about StringBuffer and StringBuilder and how to use them in Java

试试这段代码 -

public static String decrypt(String question, Scanner console)
{
  System.out.print(question + " ");
  String s = console.nextLine();
  String result ="":
 for (int i = 0; i < s.length(); i=i+2)
  {
     result  += s.charAt(i);
  }
return result;
}

Follow this link to read other interesting Java String stuff

答案 7 :(得分:0)

由于这是Java的开始,你可以试试这个:

//This method prints out the even indexes of a string
public static String decrypt(String question, Scanner console)
{
  System.out.print(question + " ");
  String s = console.nextLine();
  for (int i = 0; i < s.length(); i+=2)
    {
         System.out.print(s.charAt(i));
    }
}