2010-10-11 7 views
0

J'utilise essayer sur mon code et il indique un début de type illégal. J'utilise des instructions switch mais par défaut: continuer; Je ne suis pas d'accord les uns avec les autres, je continue de me poursuivre en dehors de la boucle. Avec l'instruction else, le type de démarrage est illégal. Alors, que puis-je faire pour essayer, continuer et l'instruction else.Par défaut continuer et if else instructions

public class Menu { 
private Inventory database; 
private char menuItem; 
private Scanner input; 
private char mode; 
int code; 


public Menu(Inventory database) 
{ 
    this.database = database; 
    menuItem  = 'N'; 
    input = new Scanner(System.in); 
} 

public Menu(MyArrayList database) 
{ 
    this.database = database; 
    menuItem = 'A'; 
    input = new Scanner(System.in); 

} 

private void showMenu() 
{ 
    if(code == 'A'){ 

    System.out.println(); 
    System.out.println("------------------"); 
    System.out.println("Display Movies : D"); 
    System.out.println("Add Movie  : A"); 
    System.out.println("Delete Movie : X"); 
    System.out.println("Select Mode : M"); 
    System.out.println("Exit   : E"); 
    System.out.println("------------------"); 
    System.out.println(); 
    System.out.print("Please make your selection: "); 

} 
else  
{ 
    System.out.println(); 
    System.out.println("------------------"); 
    System.out.println("Display Movies : D"); 
    System.out.println("Rent a Movie : R"); 
    System.out.println("Reserve a Movie: S"); 
    System.out.println("Select Mode : M"); 
    System.out.println("Exit   : E"); 
    System.out.println("------------------"); 
    System.out.println(); 
    System.out.print("Please make your selection: "); 

} 
} 

private void rentMovie(int productID) 
{ 
    int index = database.getIndex(productID); 
    if(index == -1) 
    { 
     System.out.println("There is not such a code."); 
    } 
    else 
    { 
     if(database.getMovie(index).getIsRented()) 
     { 
      System.out.println("You cannot rent " + database.getMovie(index).getTitle() + ". It is already rented."); 

     } 
     else 
     { 
      database.getMovie(index).setIsRented(true); 
      System.out.println("Please take your movie."); 

     } 
    } 

} 


private void reserveMovie(int productID) 
{ 
    int index = database.getIndex(productID); 
    if(index == -1) 
    { 
     System.out.println("There is not such a code."); 
    } 
    else 
    { 
     if(database.getMovie(index).getIsReserved()) 
     { 
      System.out.println("You cannot reserve " + database.getMovie(index).getTitle() + ". It is already reserved."); 
     } 
     else 
     { 
      if(database.getMovie(index).getIsRented()) 
      { 
       database.getMovie(index).setIsReserved(true); 
       System.out.println(database.getMovie(index).getTitle() + " is reserved for you."); 
      } 
      else 
      { 
       System.out.println(database.getMovie(index).getTitle() + " is available. You can rent it if you like."); 
      } 
     } 
    } 

} 

try{ 
    if(mode == 'A'){ 
     switch(menuItem){ 
      case 'N': 
       break; 
      case 'D': 
       database.print(); 
       showMenu(); 
       menuItem = input.next().charAt(0); 
       break; 
      case 'A': 
       String title; 
       System.out.println("Enter movie title, then press enter");//movie title, 
       title= input.nextLine(); 
       System.out.println("Enter movie code, then press enter");//enter movie code,then press enter 
       code = Integer.parseInt(input.nextLine()); 
       addMovie(title,code); 
       menuItem ='N'; 
       break; 
      case 'X': 
       System.out.println(""); 
       deleteMovie(code); 
       menuItem ='N'; 
       break; 
      case 'M': 
       selectMode(); 
       menuItem = 'N'; 
      case 'E': 
       System.out.print("Program terminated."); 
       System.exit(0); 
       break; 
      default: 
       continue; 
     } 
    } 
} 
    else 
{ 
    public void run(){ 
      int code; 
    while(true) 
    { 

     switch(menuItem) 
     { 
      case 'N': 
       break; 
      case 'D': 
       database.print(); 
       showMenu(); 
       menuItem = input.next().charAt(0); 
       break; 
      case 'R': 
       System.out.print("Please enter product code:"); 
       rentMovie(input.nextInt()); 
       showMenu(); 
       menuItem = input.next().charAt(0); 
       break; 
      case 'S': 
       System.out.print("Please enter product code:"); 
       reserveMovie(input.nextInt()); 
       showMenu(); 
       menuItem = input.next().charAt(0); 
       break; 
      case 'E': 
       System.out.print("Program terminated."); 
       System.exit(0); 
       break; 
      default : 
       showMenu(); 
       menuItem = input.next().charAt(0); 
     } 

    } 
} 

}

+0

De quel type est le menuItem? – jjnguy

+0

menuItem est un caractère privé – Lola

+0

Depuis que vous êtes nouveau sur Java, quel programme utilisez-vous pour éditer votre code? Avoir un IDE vous aidera à attraper beaucoup de vos erreurs de syntaxe et aider à reformater toute votre indentation. Qu'est-ce qu'un IDE? http://en.wikipedia.org/wiki/Integrated_development_environment –

Répondre

0

Avec votre édition, montrant maintenant la question. Votre essai commence en dehors du corps d'une méthode. ReserveMovie est fermé juste avant le début de l'essai, et en tant que tel n'est pas valide.

+0

alors je l'insère à l'intérieur de reserveMovie – Lola

+0

Vous retournez et étudiez le code jusqu'à ce que vous le compreniez. Vous essayez ne devrait pas aller n'importe où tant qu'il n'a pas de prise – Mantar

1

Vous avez else suivant votre bloc try, et qui n'a pas de sens. non, juste une mauvaise indentation. Où est votre bloc catch ou finally? Cela n'a aucun sens d'avoir seulement try. En outre, vous ne pouvez pas déclarer une fonction au milieu de ce bloc else. Fondamentalement, je vous recommande de revoir le chapitre "Syntaxe Java" du guide que vous utilisez, parce que ce code est tout simplement faux.

+0

J'ai probablement écrit le code erroné de mon professeur – Lola

+0

Oh, eh bien, je n'ai pas ça. C'est ce que je pensais, "comment est-ce qu'il y a un essai mais pas de prise". Je suis nouveau à java donc il devient confus pour moi – Lola

+0

Est-ce une mission donnée que notre instructeur nous a donné pour ajouter une déclaration de commutateur – Lola

1

A .. Quelques pointeurs .. Tout d'abord, votre essai n'a pas de problème. Vos instructions de requête manquent de {} blocs. Et vous ne pouvez pas créer une méthode dans un autre bloc.

En outre pour répondre à votre question: Début de type illégal signifie que vous n'avez pas initié la variable. Par exemple "menuItem"

Éditer: En outre, la valeur par défaut devrait être break; ne pas continuer

Edit2: Et plus loin votre deuxième commutateur contient un booléen comme argument ...