2017-11-18 34 views
0

我正在嘗試通過if語句接受A或B的大寫或小寫字母輸入。我無法弄清楚如何做到這一點。目前,它只收取UpperCase A或B的費用。在論壇和課堂筆記的四周,沒有提到什麼。任何幫助將appriciated! 我嘗試使用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

您可以使用

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

嘿真棒,這個作品。謝謝一堆。 –

+0

歡迎您,並考慮標記答案之一作爲接受標記您的問題解決 –

1

試試這個

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

同爲 'B'

+0

啊,我明白了。我在做這個 (user =='A'||'a')。 –

1

要調用Scannernext()方法,它返回String,而不是將其轉換爲character您可以使用equalsIgnoreCase()方法對輸入字符串進行驗證。但是,如果用戶輸入的字符串的長度大於1,則始終檢查輸入字符串的長度並顯示錯誤消息。

"a".equalsIgnoreCase("A")"a".equalsIgnoreCase("a")將始終爲真。

+0

我欣賞你的概念,但你應該保持在一個變量的輸入,然後將它與equalsIgnoreCase –

+1

@Andrew Watson,我的意思是輸入是用戶輸入的數據而不是掃描儀參考。感謝您的注意,我編輯了我的問題。 –

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在這種情況下的目的是什麼?是否因爲在這種情況下opt是一個String而不是char? –

+0

我改變了我的答案。我們使用readLine()方法讀取InputStream.Example: InputStreamReader in = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(in); String a = br.readLine(); –

+0

@Andrew Watson您不應該使用** == **運算符來檢查兩個字符串,它只會比較地址位置(** opt **和字符串文字將位於兩個不同的位置),請使用** equals()* *在String類中的方法被覆蓋以比較代碼的第二部分中兩個對象的數據。 –