提问人:Derek Kwon 提问时间:10/7/2023 最后编辑:Diego BorbaDerek Kwon 更新时间:10/7/2023 访问量:49
扫描程序对象返回类型 [duplicate]
Scanner object return type [duplicate]
问:
我正在用 Java 编写一个内存游戏,作为我的第一个大学水平的 Java 作业,我对 Java 处理用户输入的方式感到困惑。
记忆游戏要求用户在 3 种不同的难度模式之间进行选择:简单、中等和困难。我认为这相对简单,因为我可以使用并获得用户想要的难度。Scanner
nextLine
这并不像我想象的那么容易,我完全不知道如何修复错误,我正在使用简单模式来测试我当前的进度,但是当我输入“简单”时,“简单”条件中的代码永远不会运行。
相反,最底部的条件运行,这是困难模式的 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
答:
0赞
Mr. Polywhirl
10/7/2023
#1
正如其他人所指出的,在处理字符串时,您应该使用 for 等式检查。您还可以通过调用 来规范化用户的输入。请求输入时,您还应该提示用户,例如“选择难度”。String#equals
toLowerCase()
此外,您可以定义常量 () 值,甚至 a 来表示难度选择。final
enum
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。
上一个:为什么我无法获得分类的输出?
评论
while
while (!difficulty_list.contains(difficulty))
dificultyList