Java while循环rows<=12条件始终判定为true,未正常触发校验原因求解
问题根因
你写的while循环的逻辑运算符和判断规则完全写反了,具体错误如下:
- 逻辑运算符使用错误:你用了
&&(逻辑与),该运算符只有左右两个条件同时为真时,整体表达式才为真。你写的条件是rows < 5 && rows <=12,只要rows <5成立,必然满足rows <=12,第二个条件不会起到任何校验作用;如果rows >=5,&&会直接短路不判断第二个条件,这就是你遇到的第二个条件不触发的原因。 - 循环逻辑写反:while循环的规则是条件为真时执行循环体,你的需求是「输入不在5~12的合法区间时,重复提示用户输入」,合法区间的判断是
rows >=5 && rows <=12,对应的非法区间应该是rows <5 || rows >12,需要用||(逻辑或)连接两个非法条件。
修正后的代码
package com.company; import java.util.*; public class Main { public static void main(String[] args) { int rows; Scanner myObj = new Scanner(System.in); System.out.print("Enter rows between 5 and 12 inclusive : "); rows = myObj.nextInt(); // 仅修改此处判断条件即可 while (rows < 5 || rows >12){ System.out.print("Enter rows between 5 and 12 inclusive : "); rows = myObj.nextInt(); } System.out.println("you can proceed now!"); } }
修正后逻辑说明
当用户输入的行数小于5,或者大于12时,循环条件成立,会再次提示用户输入,直到输入落在5~12的合法区间,循环条件不成立,退出校验逻辑。
内容的提问来源于stack exchange,提问作者isfan
相关产品推荐
相关产品推荐

