【问题标题】:How can I convert this JOptionPane result to integer value?如何将此 JOptionPane 结果转换为整数值?
【发布时间】:2021-02-24 22:15:01
【问题描述】:

我怎样才能让这个JOptionPane.showInputDialog 返回一个整数值而不是一个字符串值?

链的值是西班牙语 提前抱歉

我输入了Integer.parseInt(),但它对我不起作用*

String[] Options = {
    "Mostrar la lista de ganancias de cada una de las busetas\n",
    "Mostrar la buseta que más dinero gano esa semana\n",
    "Mostrar la buseta que menos dinero gano esa semana\n",
    "Mostrar el dia que mas gana cada una de las busetas\n",
    "Aumentar las ventas que estan por debajo del promedio un 20%"
};
    
int decision = Integer.parseInt(
                                JOptionPane.showInputDialog(
                                    null,
                                    "Digite la funcion que desea usar: ",
                                    "Busetas",
                                    JOptionPane.DEFAULT_OPTION,
                                    JOptionPane.QUESTION_MESSAGE,
                                    null,
                                    Options,
                                    Options[0]));

【问题讨论】:

  • 您好,提高的可读性将通过为读者提供更好的体验来鼓励人们回答您的问题。我已经为您格式化了您的问题,但在您的下一个问题上,请阅读 stackoverflow markdown 格式。

标签: java swing


【解决方案1】:

一个好的方法是通过检查the Javadocs来尝试了解您正在使用的方法

  1. 我注意到的第一件事是,您的代码甚至无法编译,因为您的参数太多。
JOptionPane.showInputDialog(
                            null, // parent
                            "Digite la funcion que desea usar: ", // message
                            "Busetas", // title
                            JOptionPane.DEFAULT_OPTION, // ???? What's this?
                            JOptionPane.QUESTION_MESSAGE, // message type
                            null, // icon
                            Options, // selection values
                            Options[0]); // initial selection
  1. 接下来,根据 Javadocs,showInputDialog() 返回类型 Object

该返回值是您传递给Integer.parseInt(String) 的值。同样,这不会编译,因为 parseInt 需要 StringObject 不会自动转换为 StringparseInt 也在 javadocs 中,否则你的 IDE 会告诉你这个错误。

  1. 如果您让代码逐步运行以尝试了解正在发生的事情,您会看到showInputDialog 返回用户从下拉列表中选择的完整String。这些来自您的 Options 数组。这些都不能直接翻译成int
// Use small first letter in variable names. This is java convention and will help readers of your code be less confused.
String[] options = {
    "Mostrar la lista de ganancias de cada una de las busetas\n",
    "Mostrar la buseta que más dinero gano esa semana\n",
    "Mostrar la buseta que menos dinero gano esa semana\n",
    "Mostrar el dia que mas gana cada una de las busetas\n",
    "Aumentar las ventas que estan por debajo del promedio un 20%"
};

Object selection = JOptionPane.showInputDialog(
                                    null,
                                    "Digite la funcion que desea usar: ",
                                    "Busetas",
                                    // JOptionPane.DEFAULT_OPTION, // Removed this to make it work
                                    JOptionPane.QUESTION_MESSAGE,
                                    null,
                                    options,
                                    options[0]);

System.out.println(selection); // This prints for example: Mostrar la lista de ganancias de cada una de las busetas
    
// Therefore below line will be like Integer.parseInt("Mostrar la lista...");
int decision = Integer.parseInt(selection);

所以你现在可以看到为什么Integer.parseInt() 不起作用了。

  1. 我的建议是查找如何在字符串数组中查找字符串的索引:How to find index of STRING array in Java from a given value?

TLDR:您的代码无法编译。请参阅 Javadocs。采取更小的步骤来简化您的问题。

【讨论】:

    【解决方案2】:

    感谢您的帮助。我附上我在代码中所做更改的解决方案和解释,以防有人需要它

    String[] options = {
            "Mostrar la lista de ganancias de cada una de las busetas", 
            "Mostrar la buseta que más dinero gano esa semana", 
            "Mostrar la buseta que menos dinero gano esa semana",
            "Mostrar el dia que mas gana cada una de las busetas",
            "Aumentar las ventas que estan por debajo del promedio un 20%",
            "Salir"};
    
    Object selection = JOptionPane.showInputDialog(
                null, 
                "Seleccione una de las opciones disponibles", 
                "Busetas",
                JOptionPane.QUESTION_MESSAGE,
                null,
                options,
                options[0]);
        
    decision = Arrays.asList(options).indexOf(selection);
    

    我使用了 java.util.Arrays 库 在此之后,我采用 asList () 方法返回一个由指定数组支持的固定大小的列表,在这种情况下,它是选项数组,然后我使用 .indexOF () 方法返回一个整数值,具体取决于选择并将其分配给决策变量

    【讨论】:

    • 恭喜您学习了标记并遵循 Java 命名约定!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 2019-06-12
    • 1970-01-01
    • 2022-01-07
    相关资源
    最近更新 更多