1

我正在尝试打印字符串中的每个第二个字母,但由于某种原因,我只正确打印了第一个第二个字母,但之后它继续以奇怪的顺序打印。这是我的代码:

    out.print("Please enter a word: ");
    String word = in.nextLine();
    char[] c = word.toCharArray();
    int x = 0;
    while (x < c.length) {
        if (c[x] % 2 != 0) {
            out.print(word.charAt(x) + " ");
        }

        x++;
    }
4

4 回答 4

6

你应该改变这个:

if (c[x] % 2 != 0) {

if (x % 2 != 0) {

这会比较您正在使用的索引,而不是比较字符。x是角色的位置。c[x]是性格。您可以读作“数组c[x]中位置的值”。xc

于 2013-09-19T17:29:25.923 回答
1

您正在计算字符模 2 而不是索引模 2

顺便一提:

String word …
for(int ix=1; ix<word.length(); ix+=2)
    out.print(word.charAt(ix) + " ");

让它变得简单得多。

于 2013-09-19T17:29:51.383 回答
1

您为什么要尝试确定字符 ( c[x]) 是否为奇数?您应该测试索引本身。

if (x % 2 != 0) {
于 2013-09-19T17:29:23.357 回答
0

问题区域:您正在检查值而不是索引

while (x < c.length) {
        if (c[x] % 2 != 0) {
            out.print(word.charAt(x) + " ");
        }

将其转换为:检查索引而不是值

   while (x < c.length) {
            if (x % 2 != 0) {
                out.print(word.charAt(x) + " ");
            }
于 2013-09-19T17:32:57.393 回答