字符串和循环练习测试
Strings and Loops Practice Test
我对这个测试题有点困惑。我制作了 i 、 j 和字符串的值的图表。我得到 "nbearig",但我的运行时正在打印数字。我不确定哪里出错了。 ++i , --j 表示它们在 for 循环之后的代码之前 incre/decremented 对吗?
public class AlGore {
public static void main(String[] args) {
String mystery = "mnerigpaba";
String solved = "";
int len = mystery.length();
for (int i = 0, j = len - 1; i < len/2; ++i, --j) {
solved += mystery.charAt(i) + mystery.charAt(j);
}
System.out.println(solved);
}
}
您正在执行整数数学运算(因为 char
是一个 integral type),
// solved += mystery.charAt(i) + mystery.charAt(j);
solved += Character.toString(mystery.charAt(i))
+ Character.toString(mystery.charAt(j));
这样您就可以执行 String
串联。
mystery.charAt(i) + mystery.charAt(j);
将添加这两个字符的数值。您可以通过在
之前添加 "" +
来强制字符串连接:
solved += "" + mystery.charAt(i) + mystery.charAt(j);
I'm not sure where I went wrong. ++i , --j means that they were incre/decremented before the code after the for loop right?
1)分别预增/预减
2) 每次循环体执行后发生
my compiler is printing out numbers.
不,不是。编译器正在编译你的代码!!! JVM 正在打印数字...当您 运行 代码时。
要了解原因,请仔细看一下:
solved += mystery.charAt(i) + mystery.charAt(j);
这相当于
solved = solved + ( mystery.charAt(i) + mystery.charAt(j) );
现在括号中的表达式执行字符与字符的数字加法。根据 Java 表达式的规则,这给出了 int
值。所以整个表达式变成:
solved = String.concat(
solved,
Integer.toString(mystery.charAt(i) + mystery.charAt(j));
I thought that the charAt(i) function will return a string?
没有。它 returns a char
... 就像方法名称 "charAt" 暗示的那样。 String
和 char
是根本不同的类型。
点评:这是一道很好的考题,它测试你对循环的理解程度,以及你对Java表达式语义的理解程度。
我对这个测试题有点困惑。我制作了 i 、 j 和字符串的值的图表。我得到 "nbearig",但我的运行时正在打印数字。我不确定哪里出错了。 ++i , --j 表示它们在 for 循环之后的代码之前 incre/decremented 对吗?
public class AlGore {
public static void main(String[] args) {
String mystery = "mnerigpaba";
String solved = "";
int len = mystery.length();
for (int i = 0, j = len - 1; i < len/2; ++i, --j) {
solved += mystery.charAt(i) + mystery.charAt(j);
}
System.out.println(solved);
}
}
您正在执行整数数学运算(因为 char
是一个 integral type),
// solved += mystery.charAt(i) + mystery.charAt(j);
solved += Character.toString(mystery.charAt(i))
+ Character.toString(mystery.charAt(j));
这样您就可以执行 String
串联。
mystery.charAt(i) + mystery.charAt(j);
将添加这两个字符的数值。您可以通过在
"" +
来强制字符串连接:
solved += "" + mystery.charAt(i) + mystery.charAt(j);
I'm not sure where I went wrong. ++i , --j means that they were incre/decremented before the code after the for loop right?
1)分别预增/预减
2) 每次循环体执行后发生
my compiler is printing out numbers.
不,不是。编译器正在编译你的代码!!! JVM 正在打印数字...当您 运行 代码时。
要了解原因,请仔细看一下:
solved += mystery.charAt(i) + mystery.charAt(j);
这相当于
solved = solved + ( mystery.charAt(i) + mystery.charAt(j) );
现在括号中的表达式执行字符与字符的数字加法。根据 Java 表达式的规则,这给出了 int
值。所以整个表达式变成:
solved = String.concat(
solved,
Integer.toString(mystery.charAt(i) + mystery.charAt(j));
I thought that the charAt(i) function will return a string?
没有。它 returns a char
... 就像方法名称 "charAt" 暗示的那样。 String
和 char
是根本不同的类型。
点评:这是一道很好的考题,它测试你对循环的理解程度,以及你对Java表达式语义的理解程度。