如何使此JOptionPane.showInputDialog
返回整数值而不是字符串值?
链的值是西班牙语的抱歉提前
我把Integer.parseInt()
,它没有为我工作*
String[] Options = {
"Mostrar la lista de ganancias de cada una de las busetasn",
"Mostrar la buseta que más dinero gano esa semanan",
"Mostrar la buseta que menos dinero gano esa semanan",
"Mostrar el dia que mas gana cada una de las busetasn",
"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]));
一个好的方法是通过检查Javadocs
来尝试理解您正在使用的方法。- 我注意到的第一件事是,你的代码甚至不会编译,因为你有太多的参数。
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
- 接下来,根据Javadocs,
showInputDialog()
返回类型Object
。
这个返回值就是你传递给Integer.parseInt(String)
的值。同样,这也不会编译,因为parseInt
需要一个String
。Object
不会自动转换为String
。parseInt
也在javadocs中,否则你的IDE会告诉你这个错误。
- 如果您让您的代码一步一步地工作,试图理解正在发生的事情,您将看到
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 busetasn",
"Mostrar la buseta que más dinero gano esa semanan",
"Mostrar la buseta que menos dinero gano esa semanan",
"Mostrar el dia que mas gana cada una de las busetasn",
"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()
不起作用了。
- 我的建议是查找如何在字符串数组中找到字符串的索引:如何从给定值找到Java中字符串数组的索引?
TLDR:你的代码无法编译。参考Javadocs。通过采取更小的步骤来简化问题。
谢谢你的帮助。我附上了我在代码中所做更改的解决方案和解释,以防有人需要它
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()方法返回由指定数组支持的固定大小的列表,在本例中,它是options数组然后我使用.indexOF()方法根据选择返回整数值并将其分配给决策变量