Java 当条件设置为false时,循环执行最后一次

Java 当条件设置为false时,循环执行最后一次,java,string,while-loop,Java,String,While Loop,任务:检查用户输入字符串是否具有相同的第一个和最后一个字符。如果是或否,则输出到屏幕,如果用户输入“完成”,则退出循环 问题:当条件为false时执行While循环 我尝试过的:使用不同类型的循环,在循环中做一个循环来重新验证代码,然后一起放弃 import java.util.*; public class lab_15 { public static void main(String args[]) { String userInput = ""; String

任务:检查用户输入字符串是否具有相同的第一个和最后一个字符。如果是或否,则输出到屏幕,如果用户输入“完成”,则退出循环

问题:当条件为false时执行While循环

我尝试过的:使用不同类型的循环,在循环中做一个循环来重新验证代码,然后一起放弃

import java.util.*; 


public class lab_15 {
  public static void main(String args[]) { 
    String userInput = "";
    String done = "done";    
    while (!userInput.equalsIgnoreCase(done))
    {
        int length;
        Scanner sc = new Scanner(System.in); 
        userInput = sc.next();
        length = (int)userInput.length();

        if (userInput.charAt(0) == userInput.charAt(userInput.length()-1)) {
            System.out.println("The first character equals the second character.");
        }
        else {
            System.out.println("The first and second characters are different.");
        }
    }
    // EXIT LOOP
    System.out.println("Thank you for using this software!");
  }
}
投入 +布拉德利 +汉娜 +完成

我仍然是新的网站,并已参考了t的s&c的有关职位。如果您发现问题没有挑战性,请不要否定。我是编程新手,希望有所进步


谢谢你

这是因为一旦进入循环,您会立即更改
userInput
。只有在到达循环顶部时才检查该条件,因此,如果中途使该条件无效,它将继续执行,直到到达顶部为止

解决方案是重构,以便最后发生的事情是更改用户输入,以便在值更改后立即检查条件。(我还将把scanner实例化从循环中拉出来。)


或者,如果
userInput
已更改以匹配终止条件,您可以在
while
循环中检查您的条件,并调用
break
break
关键字将强制逻辑立即退出循环,而无需再次评估条件。

是否可以包括提供给程序的输入?如果输入
done
,如果。。。否则…循环的一部分,然后才退出。请尝试使用bufferedReader而不是Scanner。我希望这将解决问题add
if(userInput.equalsIgnoreCase(done))break就在条件之前。@Jimmy谢谢!这真是太棒了!我感谢你坚持不懈地提出这些愚蠢的问题,非常感谢,在循环结束时用了休息。把它修好了!