【问题标题】:While Loop executing one last time when condition is set to false当条件设置为 false 时,while 循环最后一次执行
【发布时间】:2014-03-03 23:17:12
【问题描述】:

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

问题:当条件为假时执行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!");
  }
}

输入 + 布拉德利 +汉娜 + 完成

我仍然是该网站的新手,并且已经提到了有关帖子的条款和条件。如果您发现这个问题没有挑战性,请不要否定。我是编程新手,希望有所进步。

谢谢!!!

【问题讨论】:

  • 您能否将提供给程序的输入包括在内?
  • 如果输入done,它仍然会经过循环的if ... else ...部分,然后才退出。
  • 尝试使用 bufferedReader 而不是 Scanner。希望能解决问题
  • 在条件前添加if(userInput.equalsIgnoreCase(done)) break;
  • @Jimmy 谢谢!这非常有效!感谢您对此类愚蠢问题的坚持不懈

标签: java string while-loop


【解决方案1】:

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

解决方案是重构,以便最后发生的事情是更改您的 userInput,以便在更改值后立即检查条件。 (我也会将扫描仪实例化退出循环。)

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

【讨论】:

  • 非常感谢,在循环结束时使用了中断。马上修好了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-10
  • 1970-01-01
  • 2013-08-12
  • 1970-01-01
  • 1970-01-01
  • 2018-08-13
相关资源
最近更新 更多