所以我应该写一个只打印出字符串偶数索引的方法。例如,如果我在控制台/扫描仪中输入“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;
}
答案 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)
因为你是初学者,你的问题很明显。让我解释一下
ZERO(0)
开始,但您在for循环中使用int i=1
。i < s.length()
或i <= s.length()
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));
}
}