0

do-while 循环是在增加之前还是之后检查一个值?我似乎无法使这个 do-while 循环转义,也无法确定这是否是我所犯的错误。这个循环的重点是从用户那里获取输入,当他们点击“X”时,我希望循环结束。我是否使用了错误类型的循环,或者可能是不正确的语句?

int i = 0, 
inputCount = 0;
char letter = 'a';
String[] coefficient = new String[MAX_LENGTH];  
do{ 
    System.out.print("What is " + letter +"? ");
    coefficient[i] = keyboard.nextLine();
    i++;
    letter++;
    inputCount++;           
}while(coefficient[i] != "X");
4

3 回答 3

4

不要使用==. 请改用equals(...)orequalsIgnoreCase(...)方法。了解 == 检查两个对象是否相同,这不是您感兴趣的。另一方面,这些方法检查两个字符串是否具有相同顺序的相同字符,这在这里很重要。所以而不是

if (fu == "bar") {
  // do something
}

做,

if ("bar".equals(fu)) {
  // do something
}

或者,

if ("bar".equalsIgnoreCase(fu)) {
  // do something
}  

特别是在你的情况下,我会改变

} while(coefficient[i] != "X");

类似于:

} while(!"X".equalsIgnoreCase(coefficient[i]));

而且您的代码中还有另一个问题,您想测试您放入的用户输入coefficient[i],但随后您立即增加 i 变量以coefficient[i]不再引用输入。

所以也许测试应该是:

} while(!"X".equalsIgnoreCase(coefficient[i - 1]));
于 2012-09-16T02:43:38.493 回答
1

这里有两个问题。首先,您不应该使用逻辑运算符比较字符串。使用 .equals 代替。例如:

coefficient[i].equals("X");

其次,在检查 while 条件之前,您要增加数组索引计数器。所以你实际上需要从中减去一个来检查最近输入的字符串是否是 X。

看看使用它是否可以正常工作:

coefficient[i-1].equals("X");
于 2012-09-16T02:48:30.773 回答
1

您在andi之间递增,因此在检查 coefficient[i] 为空时,也使用 .equals 比较字符串。coefficient[i] = keyboard.nextLine();while(coefficient[i] != "X");

int i = 0, 
inputCount = 0;
char letter = 'a';
String[] coefficient = new String[MAX_LENGTH];  
do{ 
    System.out.print("What is " + letter +"? ");
    coefficient[i] = keyboard.nextLine();
    i++;
    letter++;
    inputCount++;           
}while(!coefficient[i-1].equals("X"));
于 2012-09-16T02:49:08.883 回答