Не распознает .equals (String) из входных данных сканера - PullRequest
0 голосов
/ 30 января 2019

- Введение: Здравствуйте, я писал простую программу для практики.Программа будет Генератором паролей.Это на самом начальном этапе.Пока я тестировал свои коды, я столкнулся с проблемой.Я гуглил и смог найти похожие случаи, но я все еще не мог понять.

- Проблема: Проблема начинается с нескольких строк после 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");
            }
        }

    }
}

1 Ответ

0 голосов
/ 30 января 2019

Чтобы прочитать слово со сканера, используйте следующую ():

String userInput = Nc.next();
if(userInput.equals("Y")){
    // some code
}
...