Java的“while”循环问题
我想做的是从用户那里得到一个密码,然后检查它是否有4个条件。如果是对的话。然后打印出“密码正确”。如果不是,则向用户显示错误并返回菜单。问题是我不能回到菜单上去。如果我在第^{
import java.util.Scanner;
public class Text_processing
{
public static void main(String[] args)
{
Scanner kb = new Scanner(System.in); //user input
String user_input; // To hold input
char[] array; //Array for user_input
int letters = 0; // Number of letters
int digits = 0; // Number of digits
boolean nu = true; //
boolean nl = true;
boolean nd = true;
boolean n7 = true;
//User interface
//suppose to put a while loop here, but.....
System.out.println();
System.out.println("Please create a password and a legal one"
+ " should contain the following elements:");
System.out.println("\tAt least 7 characters in length.");
System.out.println("\tAt least 1 upper case letter.");
System.out.println("\tAt least 1 lower case letter.");
System.out.println("\tAt least 1 number.");
//Get a string from the user
user_input = kb.nextLine();
//Convert it to a char array
array = user_input.toCharArray();
for(int i = 0; i < array.length; i++)
{
if(!nu && !nl && !nd && !n7)
{
break;
}
if (array.length >= 7) //not < 7 cos breaks
{
n7 = false;
}
if(Character.isUpperCase(array[i]))
{
nu = false;
}
if (Character.isLowerCase(array[i]))
{
nl = false;
}
if (Character.isDigit(array[i]))
{
nd = false;
}
}
if(n7)
{
System.out.println("Password does not contain 7 or more letters.");
}
if(nu)
{
System.out.println("Password does not contain an upper case letter.");
}
if(nl)
{
System.out.println("Password does not contain an lower case letter.");
}
if(nd)
{
System.out.println("Password does not contain a number.");
}
System.out.println("Password is correct.");
}
}
# 1 楼答案
我个人觉得您编写的代码太长,无法进行如此简单的检查
但问题仍然是,只有当您可以设置while循环来检查有效标志是否为true并在最后读取键盘输入时,才能修复hand
类似下面的代码:
# 2 楼答案
编写一个简单的方法来验证密码,如下所示
# 3 楼答案
while循环从以下位置开始有什么问题:
并在以下时间之前结束:
# 4 楼答案
为什么你要去的具体原因,你已经显示了内容,密码应该是什么
只需打印“密码不符合上述条件,请重试”
我觉得足够了
# 5 楼答案
这种情况的标准模式是:
在输入有效输入之前,循环无法退出,在此之后
userInput
将保留该值还要注意,通过将提示放在循环中,可以避免无效输入上的代码重复
# 6 楼答案
在当前代码中,需要确保在主循环的每次迭代中重置
nu
、nl
、nd
、n7