2017-11-18 18 views
0

if文の後に続くために、大文字または小文字のいずれかでAまたはBを入力しようとしています。私はこれを行う方法を理解することはできません。現時点では、それはUpperCase AまたはBを取り入れているだけです。フォーラムとクラスノートを見て、何も出てこなかった。どんな助けでも謝罪されるでしょう! toUpperCase()を使用しようとしましたが、正しい場所に配置しているとは思われません。それは私にエラーユーザ入力upperCaseとlowerCase - Java

import java.util.Scanner; 

public class printNumber{ 
    public static void main (String[] args){ 
     Scanner input = new Scanner(System.in); 
     System.out.println("Please select an option between A or B: "); 
     char user = input.next().charAt(0); 

     System.out.println("You have selected " +user+ " : ");  
     if (user == 'A'){ 
      for(int n=1; n<=100; n++){ 
       if((n%2)==0) 
        System.out.println(n); 
      } 
     } 
     else if (user =='B'){ 
      for (int x =1; x<=100; x=x+2){ 
       System.out.println(x); 
      } 
     } 
     else 
      System.out.println("Error, please try again!"); 
    } 
} 

答えて

1

のために、この

if (user == 'A' || user == 'a') 

同じことを試してみてくださいを与え続けますこれはStringを返すので、に変換するのではなくequalsIgnoreCase()メソッドを入力文字列に使用して検証することができます。しかし、ユーザーが入力した文字列の長さが1より大きい場合、入力文字列の長さを常にチェックし、エラーメッセージを表示します。

"a".equalsIgnoreCase("A")および"a".equalsIgnoreCase("a")は常にtrueです。

+0

こんにちは、これは素晴らしいです。本当にありがとう。 –

+0

あなたは歓迎されています。あなたの質問を解決済みとしてマークするために受け入れられた答えの1つをマークすることを検討してください。 –

1

あなたは

char user = input.next().toUpperCase().charAt(0); 
+0

ああを使用することができ、私が参照してください。私はこれをやっていた (ユーザー== 'A' || 'a')。 –

1

あなたはScannerクラスのnext()メソッドを呼び出しているを使用することができます 'B'

+0

私はあなたのコンセプトに感謝します。しかし、変数を入力したままでequalsIgnoreCase –

+1

と比較してください。ユーザーが入力したデータであり、スキャナリファレンスではありません。気づいてくれてありがとう、私は私の質問を編集しました。 –

3
import java.util.Scanner; 

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

     System.out.println("Please select an option between A or B: "); 
    String opt=input.nextLine(); 

    System.out.println("You have selected " +user+ " : "); 

    if (opt.equalsIgnoreCase("A")){ 

    for(int n=1; n<=100; n++){ 
     if((n%2)==0) 
     System.out.println(n); 
    } 
    } 
    else if (opt.equalsIgnoreCase("B")){ 
    for (int x =1; x<=100; x=x+2){ 
     System.out.println(x); 
    } 
    } 
    else 
     System.out.println("Error, please try again!"); 
    } 
} 

か、単に

import java.util.Scanner; 

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

      System.out.println("Please select an option between A or B: "); 
     String opt=input.next(); 

     System.out.println("You have selected " +user+ " : "); 

     if (opt == "A" || opt == "a"){ 

     for(int n=1; n<=100; n++){ 
      if((n%2)==0) 
      System.out.println(n); 
     } 
     } 
     else if (opt == "B" || opt == "b"){ 
     for (int x =1; x<=100; x=x+2){ 
      System.out.println(x); 
     } 
     } 
     else 
      System.out.println("Error, please try again!"); 
     } 
    } 
+0

ちょっとアンドリュー、簡単な質問です。この場合のreadLineの目的は何ですか?これはcharがcharではなく、この場合Stringであるからですか? –

+0

私は自分の答えを変えました。 ReadLine()メソッドを使用してInputStreamを読み取ります。例: InputStreamReader in = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(入力); 文字列a = br.readLine(); –

+0

@Andrew Watsonあなたは2つの文字列をチェックするために** == **演算子を使うべきではなく、アドレスの場所を比較するだけです(** opt **とStringリテラルは2つの異なる場所にあります)。** equals()* * Stringクラスで、コードの2番目の部分の2つのオブジェクトのデータを比較するためにオーバーライドされるメソッド。 –