扫描程序对象返回类型 [duplicate]

Scanner object return type [duplicate]

提问人:Derek Kwon 提问时间:10/7/2023 最后编辑:Diego BorbaDerek Kwon 更新时间:10/7/2023 访问量:49

问:

我正在用 Java 编写一个内存游戏,作为我的第一个大学水平的 Java 作业,我对 Java 处理用户输入的方式感到困惑。

记忆游戏要求用户在 3 种不同的难度模式之间进行选择:简单、中等和困难。我认为这相对简单,因为我可以使用并获得用户想要的难度。ScannernextLine

这并不像我想象的那么容易,我完全不知道如何修复错误,我正在使用简单模式来测试我当前的进度,但是当我输入“简单”时,“简单”条件中的代码永远不会运行。

相反,最底部的条件运行,这是困难模式的 else 语句,如果既不选择简单也不选择中等,则运行。

我尝试打印出我的输入,以确保它以正确的大小写和拼写显示“简单”,但“简单”条件仍然没有运行。

我的猜测是没有正确返回,或者它正确返回并且不是检查相等性的正确方法。我是 Java 的新手,我很容易出错,所以非常感谢任何和所有的建议。谢谢大家!nextLine()==

    Scanner select_diff = new Scanner(System.in);
    System.out.println("Please select a difficulty. Choose between easy, medium, or hard: ");
    ArrayList<String> difficulty_list = new ArrayList<String>();
    difficulty_list.add("easy");
    difficulty_list.add("medium");
    difficulty_list.add("hard");
    String difficulty = select_diff.nextLine(); //takes user input
    System.out.println(difficulty); //to double check that I input 'easy'
    //difficulty = difficulty.strip(); I thought these 2 lines were the issue, they were not
    //difficulty = difficulty.toLowerCase();
    while (difficulty_list.contains(difficulty) == false) //this while loop handles invalid input
    {
        System.out.println("Invalid Input. Please try again.");
        difficulty = select_diff.nextLine();
    }
    if (difficulty == "easy") //this conditional is never entered
输入 java.util.scanner

评论

0赞 Mr. Polywhirl 10/7/2023
我会将条件简化为: 另外,你看起来像是来自 Python 背景。Java 约定规定变量应为 lowerCamelCase,即 .whilewhile (!difficulty_list.contains(difficulty))dificultyList
0赞 Sören 10/7/2023
这回答了你的问题吗?如何在 Java 中比较字符串?

答:

0赞 Mr. Polywhirl 10/7/2023 #1

正如其他人所指出的,在处理字符串时,您应该使用 for 等式检查。您还可以通过调用 来规范化用户的输入。请求输入时,您还应该提示用户,例如“选择难度”。String#equalstoLowerCase()

此外,您可以定义常量 () 值,甚至 a 来表示难度选择。finalenum

import java.util.*;

public class Game {
    public static final String MODE_EASY   = "easy";
    public static final String MODE_MEDIUM = "medium";
    public static final String MODE_HARD   = "hard";

    private static final List<String> DIFFICULTY_OPTIONS =
        List.of(MODE_EASY, MODE_MEDIUM, MODE_HARD);

    public static void main(String[] args) {
        Scanner userInput = new Scanner(System.in);
        System.out.print("Choose a difficulty: ");
        String selectedDifficulty = userInput.nextLine().toLowerCase();
        while (!DIFFICULTY_OPTIONS.contains(selectedDifficulty)) {
            System.out.println("Invalid Input. Please try again.");
            System.out.print("Choose a difficulty: ");
            selectedDifficulty = userInput.nextLine();
        }
        if (selectedDifficulty.equals(MODE_EASY)) {
            System.out.println("You selected easy mode!");
        }
        // Do more stuff...
        userInput.close(); // Close when done gathering input
    }
}

评论

0赞 Derek Kwon 10/7/2023
谢谢大家!是的,正如您可能已经猜到的那样,我来自 Python 背景,这可以解释这种混淆。谢谢你让我更顺利地过渡到 java。