【问题标题】:How to limit the user answer?如何限制用户回答?
【发布时间】:2021-10-20 18:28:12
【问题描述】:

我正在创建一系列问题,我需要将用户输入限制为仅“A、B、C、D”,如果用户输入其他内容,则显示警告。我正在考虑创建一个if 条件来显示问题,但我不知道该怎么做。

这是我创建问题的方式:

     question= "Where Adolf Hitler was born?"
                + "\nA) USA"
                + "\nB) Austria"
                + "\nC) Germany"
                + "\nD) Spain";
     
     answer= JOptionPane.showInputDialog(question);
     
     if(answer=="D") {
         points++;
     }

【问题讨论】:

  • res3=="D" 不是如何在 Java 中比较字符串。
  • 另一种解决方法,将答案设为单选按钮,因此用户只需选择一个答案,无需执行任何其他操作

标签: java swing joptionpane


【解决方案1】:

我认为人们忘记了JOptionPane 之类的可配置性。

首先查看How to Make Dialogs了解更多详情

import java.text.ParseException;
import javax.swing.JOptionPane;

public class Test {

    public static void main(String[] args) throws ParseException {
        String message = "Where Adolf Hitler was born?";
        String[] options = new String[] {
            "USA", "Austria", "Germany", "Spain"
        };
        int selectedOption = JOptionPane.showOptionDialog(null, message, "Pick one", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, 0);
        if (selectedOption == 1) {
            System.out.println("Right");
        } else {
            System.out.println("Wrong");
        }
    }
}

【讨论】:

  • @ScaryWombat 有意思,因为代码和图片是一致生成的——selectedOption是基于options中的索引,好奇为什么显示顺序不一样
  • @ScaryWombat 按钮显示的顺序与数组相反,但索引总是正确返回,选择Spain会得到3 :D
  • 哦,当然,我看到了“澳大利亚”:P
【解决方案2】:

像这样使用switch 语句是合适的:

switch (answer) {
  case "A":
  case "B":
  case "C":
    System.out.println("Wrong answer");
    break;
  case "D":
    System.out.println("Correct answer");
    points++;
    break;
  default:
    System.out.println("Please enter A, B, C or D");
}

请记住,这只是演示编程逻辑。如何选择显示结果取决于您。

【讨论】:

    猜你喜欢
    • 2022-08-15
    • 2017-08-24
    • 2018-01-20
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多