简体   繁体   English

如何从JOptionPane中的字符串数组中选择索引值

[英]How to select an index value from a String Array in a JOptionPane

I've created a JOptionPane as a selection method. 我创建了一个JOptionPane作为选择方法。 I want the int value for selection 1,2 or 3 of the String Array so I can use it as a counter. 我想要字符串数组的选择1,2或3的int值,因此可以将其用作计数器。 How do I get the index of the array and set it equal to my int variable loanChoice? 如何获取数组的索引并将其设置为等于我的int变量loanChoice?

public class SelectLoanChoices {
    int loanChoice = 0;
    String[] choices = {"7 years at 5.35%", "15 years at 5.5%",
            "30 years at 5.75%"};
        String input = (String) javax.swing.JOptionPane.showInputDialog(null, "Select a Loan"
                ,"Mortgage Options",JOptionPane.QUESTION_MESSAGE, null,
                choices,
                choices[0]
                **loanChoice =**);
}

You can use JOptionPane.showOptionDialog() if you want the index of the option to be returned. 如果要返回选项的索引,则可以使用JOptionPane.showOptionDialog() Otherwise, you will have to iterate through the option array to find the index based on the user selection. 否则,您将不得不遍历选项数组以根据用户选择查找索引。

For instance: 例如:

public class SelectLoanChoices {
 public static void main(final String[] args) {
  final String[] choices = { "7 years at 5.35%", "15 years at 5.5%", "30 years at 5.75%" };
  final Object choice = JOptionPane.showInputDialog(null, "Select a Loan", "Mortgage Options",
    JOptionPane.QUESTION_MESSAGE, null, choices, choices[0]);
  System.out.println(getChoiceIndex(choice, choices));

 }

 public static int getChoiceIndex(final Object choice, final Object[] choices) {
  if (choice != null) {
   for (int i = 0; i < choices.length; i++) {
    if (choice.equals(choices[i])) {
     return i;
    }
   }
  }
  return -1;
 }
}

Since Tim Bender already gave a verbose answer, here's a compact version. 由于Tim Bender已经给出了详细的答案,因此这是一个紧凑的版本。

int loanChoice = -1;
if (input != null) while (choices[++loanChoice] != input);

Also, note that showInputDialog(..) takes an array of Objects, not necessarily strings. 另外,请注意showInputDialog(..)接受对象数组,不一定是字符串。 If you had Loan objects and implemented their toString() methods to say "X years at Y.YY%" then you could supply an array of Loans, then probably skip the array index and just jump right to the selected Loan. 如果您有Loan对象并实现其toString()方法说“ X years at Y.YY%”,那么您可以提供一个Loans数组,然后可能跳过该数组索引,而直接跳至所选的Loan。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM