2016-08-16 6 views
-1

私はJavaを使い慣れておらず、先週末にコーディングを開始しました。私はいくつかの基本的なことを構築しようとしており、以下を行った:Java 'if'と 'else 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"); 
     } 
    } 
} 

残念ながら、コードの先頭だけが実行されます。次のコードは実行されず、「子」または「大人」と入力しても何も印刷されません。

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

はSystem.in' ''上の2つの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( "child")を書くことを意味していたと思います。

0

2つのスキャナオブジェクトを作成する必要はありません.1つのスキャナオブジェクトを作成してください。 Scannerの代わりにBufferedReaderを使用することもできます。あなたのコードではuserAge.equals( "child")を使用しますが、scannerの返された値を保存しているので正しくありません。 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