2010-12-17 5 views
1

J'ai écrit un programme Binary Tree qui demande à l'utilisateur des questions sur certains animaux.Redémarrage de la boucle/programme while

Mon problème est que lorsque mon programme demande à l'utilisateur "Continuer?" Je veux que la boucle recommence, mais je ne suis pas sûr de savoir comment y arriver. Il se produit deux fois dans ma boucle while et une fois dans ma méthode d'apprentissage en bas. Est-ce que quelqu'un a des idées sur la façon dont je peux accomplir cela?

import java.util.*; 

public class AnimalGuessing { 

    public static void main(String[] args) { 
     Scanner scan = new Scanner(System.in); 


    TreeNode<String> leftTree = new TreeNode<String> ("cat"); 
    TreeNode<String> rightTree = new TreeNode<String> ("snake"); 
    TreeNode<String> gameTree = new TreeNode<String>("Does it have legs?",leftTree,rightTree); 

    TreeNode<String>curr = gameTree; 
    String response; 
    System.out.println(""); 
    System.out.println(""); 
    System.out.println("Think of an animal and I will guess it."); 

    while(!(curr.getLeft() == null && curr.getRight()==null)){ 
     System.out.print(curr.getItem()); 
     response = scan.nextLine(); 
     if (response.equals("YES")){ 
      curr = curr.getLeft(); 

      System.out.print("Is it a " + curr.getItem() + "?"); 
      response = scan.nextLine(); 
      if (response.equals("YES")){ 
       System.out.println("I win! Continue?"); 
       response = scan.nextLine(); 
       if (response.equals("YES")){ 
        //----------------------- 
        // I want it to restart 
        // the while loop here! 
        //----------------------- 
       } 
       else{ 
        System.out.println("Good-bye."); 
       } 
      } 
      else{ 
       learn(curr); 
      } 

     }//end if 
     if (response.equals("NO")){ 
      curr = curr.getRight(); 
      System.out.println("is it a " + curr.getItem() + "?"); 
      response = scan.nextLine(); 
      if (response.equals("YES")){ 
       System.out.println("I win! Continue?"); 
       response = scan.nextLine(); 
       if (response.equals("YES")){ 
        //----------------------- 
        // I want it to restart 
        // the while loop here! 
        //----------------------- 
       } 
       else{ 
        System.out.println("Good-bye."); 
       } 
      } 
      else{ 
       learn(curr); 
      } 
     } 
    }//end while 

}//end main 

    //---------------------------------- 
    // 
    // Use to add new animals/questions 
    // to the tree. 
    // 
    //---------------------------------- 
    public static void learn(TreeNode<String> current){ 
     Scanner scan = new Scanner(System.in); 
      String guessAnimal; // animal just guessed guessed 
      String correctAnimal; // animal user was thinking of 
      String newQuestion; // A question to distinguish the two 
      String response; 

      // Set Strings for the guessed animal and correct animal and a new question. 
      guessAnimal = current.getItem(); 
      System.out.print("I give up. What is it? "); 
      correctAnimal = scan.nextLine(); 
      System.out.println("Please type a question whose answer is yes for a " +correctAnimal); 
      System.out.print("and no for a " + guessAnimal + "."); 
      newQuestion = scan.nextLine(); 


      // Put the new question in the current node, and add two new children. 
      current.setItem(newQuestion); 
       current.setLeft(new TreeNode<String>(correctAnimal, null, null)); 
       current.setRight(new TreeNode<String>(guessAnimal, null, null)); 

      System.out.println("Continue?"); 
      response = scan.nextLine(); 
       if (response.equals("YES")){ 
       //-------------- 
       //I want it to 
       //restart here! 
       //-------------- 

       } 
       else{ 
        System.out.println("Good-bye."); 
       } 
     }//end learn 







}//end AnimalGuessing 

Répondre

4

si ses devoirs je ne vais pas écrire la réponse, mais expliquer

Qu'est-ce que vous voulez faire pour ajouter une boucle autour de ce code

alors vous devez ajouter une condition pour quitter la boucle (comme un loopAgain booléenne)

cette façon lorsque vous voulez redémarrer votre aventure, vous définissez la valeur booléenne true

si l'utilisateur vous a terminé de définir la bool ean à faux.

+0

THank vous! Cela aide beaucoup. – Bell

+1

pas de problème ^^. Je vous suggère également de mettre tout dans les fonctions –

+0

Comment voulez-vous dire? Comme, les méthodes? – Bell