2017-10-10 2 views
0

Donc, je suis en train d'écrire un programme qui demande essentiellement une entrée utilisateur et calcule la charge totale de cours et les frais basés sur cette sortie.Comment empêcher un utilisateur d'entrer des doublons (Utilisation de JOptionPane et if instructions dans ce programme)

Cependant, je suis un peu coincé. Je suis censé empêcher l'utilisateur d'entrer le même numéro de cours plus d'une fois et je n'arrive pas à le comprendre. Toute aide serait appréciée!

Ceci est un petit morceau de mon code:

 while (option == JOptionPane.YES_OPTION) { 
     if (!(typeOfStudent.equals("Online") || typeOfStudent.equals("On campus"))) { 
      JOptionPane.showMessageDialog(null, "Enter either 'Online' or 'On campus'"); 
      System.exit(0); 
     } 
      courseNumber = JOptionPane.showInputDialog("Enter the Course Number for the class you are taking(100/150/250/300): " + "\n"); 
      courseNum = Integer.parseInt(courseNumber); 

     if (!(courseNum == 100 || courseNum == 150 || courseNum == 250 || courseNum == 300)) { 
      JOptionPane.showMessageDialog(null, "Enter a valid course number (100/150/250/300)"); 
      System.exit(0); 
     } 
     if (courseNum == 100 && (typeOfStudent.equals("Online"))) { 
      totalNumCredits += credits100; 
      totalStudentFee += onlineStudentFee100; 

     } 
+0

Veuillez lire [mcve]. Ne vous contentez pas de déposer du code ici et attendez-vous à ce que votre code fasse exactement et à ce que cela dérive de vos attentes. – GhostCat

+0

C'était une question assez simple avec une réponse simple que je dessinais un vide. J'ai fourni suffisamment de code pour que les gens puissent avoir une idée de ce que je tentais de faire. Essayait de ne pas surcharger la page avec du code ou d'obtenir plus que ce dont j'avais besoin. C'est assez clair ce que fait le code basé sur le code lui-même et mon paragraphe montré juste avant. Merci bien – stgray

Répondre

1

Tenir à jour une liste des cours qui sont déjà sélectionnés par l'utilisateur:

List<Integer> courses = new ArrayList<>(); 

Modifiez ensuite votre code actuel pour vérifier si le cours est déjà sélectionné ou non.

if (!(courseNum == 100 || courseNum == 150 || courseNum == 250 || courseNum == 300)) { 
      JOptionPane.showMessageDialog(null, "Enter a valid course number (100/150/250/300)"); 
      System.exit(0); 
     } 
     if(courses.contains(courseNum) { 
      JOptionPane.showMessageDialog(null, "It is an already selected course number"); 
      return; 
     } 
     courses.add(courseNum); 
     if (courseNum == 100 && (typeOfStudent.equals("Online"))) { 
      totalNumCredits += credits100; 
      totalStudentFee += onlineStudentFee100; 

     } 
+0

A donné un coup de feu et il continue encore le programme. Continue d'ajouter le cours. Je pensais que ça marcherait aussi! – stgray

+1

Vous devez conserver la liste 'courses' proposée en tant que membre d'instance, et non une variable locale dans votre méthode de gestionnaire. – VHS

+1

Ah, duh! Merci, cela a définitivement pris soin d'elle. Vous êtes un épargnant de vie. – stgray