То, что я пытаюсь сделать, это получить пароль от пользователя, затем проверить его на 4 условия. Если это правильно. Затем просто распечатайте «pass word is correct». Если это не так, покажите пользователю, что не так, и вернитесь в меню. Проблема в том, что я не могу вернуться в меню. ЕСЛИ я делаю цикл while в строке //User interface //suppose to put a while loop here, but..... System.out.println(); System.out.println("Please create a password and a legal one"
. Он возвращается, но некоторые из операторов «if» не запускаются. Может ли кто-нибудь увидеть, где я застрял? Спасибо.«while» вопросы цикла для Java
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.");
}
}
Инициализация булевы ложь и делать 'в то время как (! N7 ||! Ню ||! П ||! Й)' не работает? Каким был цикл while? –
Учтите, что если вы зацикливаете назад переменные, такие как «nu», остаются там, где они были в предыдущем цикле. Либо «перезагрузите» их внутри цикла, либо переместите начало цикла снаружи, где они инициализированы. –
Вам нужно повторно инициализировать 'n7',' nu', 'nl' и' nd'. – johnchen902