2015-10-02 2 views
0

Le message d'assertion dans le boîtier de commutateur ne s'affiche pas.
Il doit générer le message d'erreur donné chaque fois qu'un utilisateur entre < 0 ou> 6. Mon assertion est dans la partie par défaut et le message ne s'affichera pas. Qu'est ce qui ne va pas avec mon code?Message d'assertion dans le boîtier de commutateur ne pas afficher

import java.util.*; 
public class DeckOfCards extends Inputs{ 
//objects 
//sets 
//int 

public DeckOfCards(){ 
    //some initialization 
} 

public void setValtyp(String val){ 
    this.valtyp = valtyp; 
} 

public String getValtyp(){ 
    return this.valtyp; 
} 

public static void main(String args[]){ 
    int exit = 0; 
    do{ 
     try{ 
      Scanner input = new Scanner(System.in); 
      int option; 
      int option2; 
      String yesno; 
      int back = 0; 
      String val; 
      String typ; 
      System.out.println("Deck of Cards"); 
      System.out.println("[1]Add"); 
      System.out.println("[2]Delete"); 
      System.out.println("[3]Display"); 
      System.out.println("[4]Search"); 
      System.out.println("[5]Count"); 
      System.out.println("[6]Exit"); 
      System.out.print("Option: "); 
      option = input.nextInt(); 

      switch(option){ 
       case 1: 
        //codes 
        break; 
       case 2: 
        //codes 
        break; 
       case 3: 
        //codes 
        break; 
       case 4: 
        //codes 
        break; 
       case 5: 
        do{ 
         try{ 
          System.out.println("\nDeck of Cards"); 
          System.out.println("[1]Heart"); 
          System.out.println("[2]Diamond"); 
          System.out.println("[3]Spade"); 
          System.out.println("[4]Clover"); 
          System.out.println("[5]All"); 
          System.out.println("[6]Back"); 
          System.out.print("Option: "); 
          option2 = input.nextInt(); 

          switch(option2){ 
           case 1: 
            System.out.println("\nHearts: "+kerds.heart.size()); 
            break; 
           case 2: 
            System.out.println("\nDiamond: "+kerds.diamond.size()); 
            break; 
           case 3: 
            System.out.println("\nSpade: "+kerds.spade.size()); 
            break; 
           case 4: 
            System.out.println("\nClover: "+kerds.clover.size()); 
            break; 
           case 5: 
            int totalsize; 
            totalsize = kerds.heart.size() + kerds.diamond.size() + kerds.spade.size() + kerds.clover.size(); 
            System.out.println("\nAll: "+totalsize); 
            break; 
           case 6: 
            System.out.println(""); 
            back++; 
            break; 
           default: 
            assert false : "Option is out of range. Please try again.\n"; 
            back++; 
            break; 
          } 
         } 
         catch(InputMismatchException e){ 
          System.out.println("Invalid Option! Please try again.\n"); 
          back++; 
         } 
        }while(back!=1); 
        break;   
       case 6: 
        exit++; 
        break; 
       default: 
        assert false : "Option is out of range. Please try again.\n"; 
      } 
     } 
     catch(InputMismatchException e){ 
      System.out.println("Invalid Option! Please try again.\n"); 
     } 
    }while(exit!=1); 
} 

}

+0

Avez-vous activé les assertions? 'java -ea' – NickJ

+0

comment puis-je activer les assertions? – Mariel

+0

comme ci-dessus, utilisez l'argument '-ea'. Si vous utilisez Eclipse, allez dans Exécuter les configurations, sélectionnez la configuration d'exécution, l'onglet Arguments, et mettez '-ea' dans la boîte Arguments de la machine virtuelle. – NickJ

Répondre

1

Retirez le back++ de

 default: 
       assert false : "Option is out of range. Please try again.\n"; 
       back++; 
       break; 

Vous sortir de la boucle lorsque les types d'utilisateur dans la mauvaise valeur, parce back == 1 à ce moment-là et vos extrémités de boucle do-while et votre premier do-while boucle exécute à nouveau, et je ne pense pas que ce que vous vouliez faire, exécutez plutôt la deuxième boucle à nouveau à la mauvaise entrée

+0

ouais je n'ai pas remarqué cela. Merci :) – Mariel