2015-11-19 60 views
-1

我正在学习使用Java和自己的代码,我是网络技术,并想学习如何编码。我从一个网站叫编程实践中学习,我被困在一个任务:新手来嵌套if语句

https://programmingbydoing.com/a/twenty-questions.html

下面

是我的代码,它会编译,但问题是与嵌套的if语句不能正常工作,请帮助! !

import java.util.Scanner; 
public class twentyQuestions 
    { 
    public static void main(String[] args) 
     { 
     Scanner keyboard = new Scanner(System.in); 
     String question1, question2, guess; 

     System.out.println("TWO QUESTIONS!"); 
     System.out.println("Think of an object, and I will try to guess it."); 
     System.out.println(); 

     System.out.println("Question 1: Is it an animal, vegetable, or mineral?"); 
     question1 = keyboard.next(); 

     System.out.println(); 

     System.out.println("Question 2: Is it bigger than a bread box?"); 
     question2 = keyboard.next(); 


     if (question1.equals("animal")) 

     { 
       if (question2.equals("no")) 

       { 
        guess = "squirrel"; 
       } 
       else { 
        guess = "moose"; 
       } 
     } 


     else if (question1.equals("vegetable")) 

      { 
      if (question2.equals("no")) 
      { 
       guess = "carrot"; 
      } 
      else 
      { 
       guess = "watermelon"; 
      } 
      } 


     else if (question1.equals("mineral")); 


     { 
      if (question2.equals("no")) 
      { 
       guess = "paper clip"; 
      } 
      else 
      { 
       guess = "Camaro"; 
      } 

     } 

     System.out.println("You're thinking of a " + guess); 
     } 

    } 
} 
+0

'嵌套if语句工作不正常'怎么会这样?你有多个嵌套的if语句 –

+0

该代码没有错误符合...它是当你输入“动物”或蔬菜,你没有得到它出现在它们下面 –

+0

开始代码格式在导入语句 – KPrince36

回答

1

首先关闭所有,你需要经过

else if (question1.equals("mineral")) 

删除分号然后,你需要在if声明的末尾添加一个最终else块捕获输入不符合任何的三个投入。然后,它将能够编译:

... 
    else if (question1.equals("mineral")) 

    { 
     if (question2.equals("no")) { 
      guess = "paper clip"; 
     } else { 
      guess = "Camaro"; 
     } 

    }else{ 
     System.out.println("Invalid input"); 
     return; 
    } 
    ... 
+0

它应该能够在没有最后的情况下编译。 – Raf

+0

不,它不会,因为在输入与任何情况都不匹配的情况下,变量猜测不会被初始化 - 即使您知道输入总是正确的,编译器也不会允许它 – AJC

+0

不确定为什么这个答案已经被降低了,但是,让我在这里给你一个帮助,+1,因为你的答案确实解决了问题并提供了解决方法 – Raf

0

谢谢大家,这里是我的作品感谢大家最终代码...: 进口java.util.Scanner的;

公共类twentyQuestions { 公共静态无效的主要(字串[] args) { 扫描器键盘=新扫描仪(System.in); String question1,question2,guess =“”;

System.out.println("TWO QUESTIONS!"); 
    System.out.println("Think of an object, and I will try to guess it."); 
    System.out.println(); 

    System.out.println("Question 1: Is it an animal, vegetable, or mineral?"); 
    question1 = keyboard.next(); 

    System.out.println(); 

    System.out.println("Question 2: Is it bigger than a bread box?"); 
    question2 = keyboard.next(); 


    if (question1.equals("animal")) 

    { 
      if (question2.equals("no")) 

      { 
       guess = "squirrel"; 
      } 
      else { 
       guess = "moose"; 
      } 
    } 


    else if (question1.equals("vegetable")) 

     { 
     if (question2.equals("no")) 
     { 
      guess = "carrot"; 
     } 
     else 
     { 
      guess = "watermelon"; 
     } 
     } 


    else if (question1.equals("mineral")) 


    { 
     if (question2.equals("no")) 
     { 
      guess = "paper clip"; 
     } 
     else 
     { 
      guess = "Camaro"; 
     } 

    } 

     else{ 
    System.out.println("Invalid input"); 
    return; 
    } 

    System.out.println("You're thinking of a " + guess); 
    } 

}