- Введение: Здравствуйте, я писал простую программу для практики.Программа будет Генератором паролей.Это на самом начальном этапе.Пока я тестировал свои коды, я столкнулся с проблемой.Я гуглил и смог найти похожие случаи, но я все еще не мог понять.
- Проблема: Проблема начинается с нескольких строк после While (Spec == 0) Когда пользователь вводит Y или N в сканере, он должен подпадать под оператор «else if» и выводить число на экран вывода, однако он продолжает печатать «Пожалуйста, введите Y или N».Это означает, что он передает мои операторы «else if» как неверное совпадение.Как я могу это исправить?
- Что я пробовал: Я пробовал Nc.toString (). Equals ("Y"), я также пробовал другие небольшие коды, которыми люди делятся, ноони были просто неверны или не работали.
- Токовые выходы:
Sys: How long will the Password be? (Numbers only)
User: 5
Sys: Do you want to include Special Characters? (Y/N)
User: Y
Sys: Please type Y or N
Sys: Do you want to include Special Characters? (Y/N)
User: N
Sys: Please type Y or N
Sys: Do you want to include Special Characters? (Y/N)
User: Yes
Sys: Please type Y or N
Sys: Do you want to include Special Characters? (Y/N)
User: 5
Sys: Please type Y or N!
Sys: Do you want to include Special Characters? (Y/N)
- Ожидаемые выходы:
Case 1
Sys: How long will the Password be? (Numbers only)
User: 5
Sys: Do you want to include Special Characters? (Y/N)
User: Y
Sys: 1
Case 2
Sys: Do you want to include Special Characters? (Y/N)
User: N
Sys: 2
Case 3
Sys: Do you want to include Special Characters? (Y/N)
User: Yes
Sys: Please type Y or N
Case 4
Sys: Do you want to include Special Characters? (Y/N)
User: 5
Sys: Please type Y or N!
Sys: Do you want to include Special Characters? (Y/N)
- Полный код:
// This is what I have currently.
import java.util.Scanner;
import java.math.*;
public class Main {
// Ask questions: how long char, include special letters or numbers.
// How long PW gonna be
private static int Char = 0;
// Special Letter Y = 1, N = 2
private static int Spec = 0;
// Include Number? Y = 1, N = 2
private static int Num = 0;
public static void main(String[] args){
// While character is 0, it's looping until value changes
while(Char == 0){
// Reads the user input
Scanner Sc = new Scanner(System.in);
// Asks the question to the user
System.out.println("How long will the Password be? (Numbers only)");
// If it has an integer
if(Sc.hasNextInt()){
Char = Sc.nextInt();
}
// If it doesn't have an integer
else {
System.out.println("Please type number only!");
}
}
// While Spec is 0, it's looping until value changes
while(Spec == 0){
// Reads the user input
Scanner Nc = new Scanner(System.in);
// Asks the question to the user
System.out.println("Do you want to include Special Characters? (Y/N)");
// If it has an integer, prompts to redo
if(Nc.hasNextInt()){
System.out.println("Please type Y or N!");
}
// If user types Y, Yes then changes spec to 1
else if (Nc.equals("Y")) {
Spec = 1;
System.out.println(Spec);
}
// If user types N, No then changes spec to 2
else if (Nc.equals("N")) {
Spec = 2;
System.out.println(Spec);
}
// If neither above, prompts to redo
else {
System.out.println("Please type Y or N");
}
}
}
}