2016-08-16 67 views
-1

我是Java新手,最近刚开始在上周内编码。我试图建立一些基本的东西,并做了以下事情:Java'if'和'if else'语句不打印

import java.util.Scanner; 

public class App { 
    public static void main(String[] args){ 
     // creating scanner object 
     Scanner userSex = new Scanner(System.in); 
     System.out.println("Enter your sex (male or female): "); 
     String sex = userSex.nextLine(); 
     System.out.println("Thank you, you entered " + sex); 

     // new scanner 
     Scanner userAge = new Scanner (System.in); 
     System.out.println("Are you a child or adult: "); 
     String age = userAge.nextLine(); 
     System.out.println("You are a " + sex + " " + age); 

     if (userAge.equals("child")) { 
      System.out.println("children"); 
     } else if (userAge.equals("adult")) { 
      System.out.println("adults"); 
     } 
    } 
} 

不幸的是,只有代码的顶部运行。下面的代码不会运行,即使输入“child”或“adult”时也不会打印任何内容。

if (userAge.equals("child")) { 
    System.out.println("children"); 
} else if (userAge.equals("adult")) { 
    System.out.println("adults"); 
} 
+0

不要创建两个''上System.in' Scanner'对象。只需创建一个并反复使用它。好名字可能是'in'。 – Andreas

+3

在您的IDE中使用调试器,这是学习如何使用它的绝佳机会 – Kon

回答

0

以下工作:

import java.util.Scanner; 

public class App { 
public static void main(String[] args){ 
    //creating scanner object 
    Scanner in = new Scanner(System.in); 
    System.out.println("Enter your sex (male or female): "); 
    String sex = in.next(); 
    System.out.println("Thank you, you entered " + sex); 

    //new scanner 
    System.out.println("Are you a child or adult: "); 
    String age = in.next(); 
    System.out.println("You are a " + sex + " " + age); 

    if(age.equals("child")) { 
     System.out.println("children"); 
    } 
    else if(age.equals("adult")) { 
     System.out.println("adults"); 
    } 

    } 
    } 

而不是创建两个单独的扫描仪只需使用一个并调用next()方法。我也将条件从if(userAge...更改为if(age...

+3

没有解释,所以没那么有用。 – Andreas

2

代替

if(userAge.equals("child")) { 
     System.out.println("children"); 
    } 
    else if(userAge.equals("adult")) { 
     System.out.println("adults"); 
    } 

做到这一点

if(age.equals("child")) { 
     System.out.println("children"); 
    } 
    else if(age.equals("adult")) { 
     System.out.println("adults"); 
    } 
1

一个已经提到的一件事是,你只需要一级扫描仪的对象。没有必要为每个输入的字符串创建一个。主要问题是您正在测试userAge是否等于“child”或“adult”,但userAge是扫描仪对象。我想你的意思是写age.equals(“孩子”),因为年龄是输入的实际字符串。

0

无需创建两个扫描仪对象。只需创建一个扫描仪对象。 你也可以使用BufferedReader代替Scanner。在你的代码中你使用userAge.equals(“child”)。但是这是不正确的,因为你存储扫描仪在年龄时返回的值,使用age来比较if-else codition age.equals( “子”)

Scanner scanner = new Scanner(System.in); 
     System.out.println("Enter your sex (male or female): "); 
     String sex = scanner.nextLine(); 
     System.out.println("Thank you, you entered " + sex); 


     System.out.println("Are you a child or adult: "); 
     String age = scanner.nextLine(); 
     System.out.println("You are a " + sex + " " + age); 


     if (age.equals("child")) { 
      System.out.println("children"); 
     } else if (age.equals("adult")) { 
      System.out.println("adults"); 
     } 

参考链接:https://docs.oracle.com/javase/tutorial/essential/io/scanning.html