2010-06-19 22 views
0

J'ai créé un JOptionPane en tant que méthode de sélection. Je veux la valeur int pour la sélection 1,2 ou 3 de la chaîne de caractères afin que je puisse l'utiliser comme un compteur. Comment puis-je obtenir l'indice du tableau et le définir égal à ma variable int loanChoice?Comment sélectionner une valeur d'index à partir d'un tableau de chaînes dans un JOptionPane

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 =**); 
} 
+1

Bienvenue sur SO. Mettez le code en surbrillance et appuyez sur Ctrl-K pour qu'il s'affiche correctement. – bernie

Répondre

1

Vous pouvez utiliser JOptionPane.showOptionDialog() si vous voulez retourner l'index de l'option. Sinon, vous devrez parcourir le tableau d'options pour trouver l'index basé sur la sélection de l'utilisateur.

Par exemple:

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

Depuis Tim Bender a déjà donné une réponse verbeux, voici une version compacte.

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

Notez également que showInputDialog(..) prend un tableau d'objets, pas nécessairement des chaînes. Si vous avez des objets Loan et que vous avez implémenté leurs méthodes toString() pour indiquer "X ans at Y.YY%", vous pouvez fournir un tableau de prêts, puis ignorer l'index du tableau et passer directement au prêt sélectionné.