字符串和循环练习测试

时间:2015-02-01 02:16:30

标签: java string loops indexing string-concatenation

我对这个测试问题感到有些困惑。我制作了i,j和字符串值的图表。我得到了“nbearig”,但我的运行时打印出数字。我不确定我哪里出错了。 ++ i, - j意味着它们在for循环之后的代码之前递增/递减了吗?

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);
    }
}

3 个答案:

答案 0 :(得分:1)

  

我不确定我哪里出错了。 ++ i, - j意味着它们在for循环之后的代码之前递增/递减了吗?

1)它们分别是预先增量/预先增量。

2)它发生在每次执行循环体之后。

  

我的编译器打印出数字。

不,不是。编译器正在编译你的代码!当您运行代码时,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));

  

我认为charAt(i)函数会返回一个字符串吗?

没有。它返回char ...就像方法名称“charAt”暗示的那样。 Stringchar基本上是不同的类型。


评论:这是一个很好的考试问题,它会测试你对循环的理解程度,以及你对Java表达语义的理解程度。

答案 1 :(得分:0)

您正在执行整数数学运算(因为charintegral type),

// solved += mystery.charAt(i) + mystery.charAt(j);
solved += Character.toString(mystery.charAt(i))
        + Character.toString(mystery.charAt(j));

这样您就可以执行String连接。

答案 2 :(得分:0)

mystery.charAt(i) + mystery.charAt(j);将添加这两个字符的数值。您可以通过在{:1>}之前添加"" +来强制进行字符串连接

solved += "" + mystery.charAt(i) + mystery.charAt(j);