任务:编写一个程序,将一行文本作为输入,并反向输出该行文本。程序重复,当用户输入“Done”、“done”或“d”作为文本行时结束。
例如:如果输入是:
Hello there
Hey
done
输出为:
ereht olleH
yeH
这是我所拥有的:
import java.util.Scanner;
public class LabProgram {
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
String inputString = scnr.nextLine();
int i;
while (!inputString.equals("done") || !inputString.equals("Done") || !inputString.equals("d")){
for (i = inputString.length() - 1; i >= 0; i--){
System.out.print(inputString.charAt(i));
}
System.out.println("");
inputString = scnr.nextLine();
}
}
}
如果我输入
Hello there
Hey
done
我最终得到了
ereht olleH
yeH
enod
我不明白为什么在 while 循环末尾扫描“done”、“Done”或“d”后,while 循环再次迭代。我试过放
if (inputString.equals("done") || inputString.equals("Done") || inputString.equals("d")){
break;
}
在我能想到的每个地方,但没有帮助。
请帮助我!!
您的代码的问题在于您的
while
循环的情况。您在条件之间使用逻辑或运算符 (||
),这意味着只要其中一个条件为真,循环就会继续。在您的情况下,如果用户输入“done”、“Done”或“d”,至少其中一个条件将始终为真,因此即使您希望循环中断,循环也会继续。
要解决此问题,您应该在
&&
循环条件中使用逻辑 AND 运算符 (||
) 而不是 while
。这样,只有当所有条件都不为真时,循环才会继续,当任何条件为真时,循环就会中断。这是更正后的代码:
import java.util.Scanner;
public class LabProgram {
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
String inputString;
while (true) {
inputString = scnr.nextLine();
if (inputString.equals("done") || inputString.equals("Done") || inputString.equals("d")) {
break;
}
for (int i = inputString.length() - 1; i >= 0; i--){
System.out.print(inputString.charAt(i));
}
System.out.println("");
}
}
}
通过此修改,只有当用户输入“done”、“Done”或“d”时循环才会退出,并将反转并打印所有其他输入的输入字符串。