无法从扫描仪的输入中识别.equals(String)

问题描述 投票:0回答:1

- 简介:你好,我正在编写一个简单的程序来练习。该程序将成为密码生成器。它处于初始阶段。当我测试我的代码时,我遇到了一个问题。我用Google搜索并找到了类似的案例,但我还是想不通。

- 问题:问题在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");
            }
        }

    }
}
java input java.util.scanner
1个回答
0
投票

要从扫描仪中读取单词,请使用next():

String userInput = Nc.next();
if(userInput.equals("Y")){
    // some code
}
© www.soinside.com 2019 - 2024. All rights reserved.