Come selezionare un valore di indice da un array di stringhe in un JOptionPane

StackOverflow https://stackoverflow.com/questions/3074478

  •  28-09-2019
  •  | 
  •  

Domanda

Ho creato un JOptionPane come un metodo di selezione. Voglio che il valore int per la selezione 1,2 o 3 della matrice di stringhe in modo da poter usare come un contatore. Come faccio ad avere l'indice della matrice e impostarlo uguale al mio variabile 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 =**);
}
È stato utile?

Soluzione

È possibile utilizzare JOptionPane.showOptionDialog() se si desidera che l'indice della possibilità di essere restituito. In caso contrario, si dovrà scorrere la matrice opzione per trovare l'indice in base alla selezione dell'utente.

Per esempio:

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;
 }
}

Altri suggerimenti

Da Tim Bender già dato una risposta dettagliata, ecco una versione compatta.

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

Inoltre, nota che showInputDialog(..) accetta un array di oggetti, non necessariamente stringhe. Se tu avessi oggetti di prestito e implementato i loro metodi toString() a dire "X anni al y.yy%" allora si potrebbe fornire una serie di prestiti, allora probabilmente saltare l'indice di array e saltare solo diritto al prestito selezionato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top