2017-04-01 14 views
0

"switch case"でScannerクラスを使用して結果を判断するにはどうすればよいですか。大文字小文字が文字列から値を取り込むように、配列の文字列のスイッチケースでスキャナを使用する方法

ゴールは、スキャナを使用して大文字と小文字を区別することができます。ユーザーのスキャナでの入力値が選択する場合は、その文字列値を使用することができるようになりますでしょう(例えばユーザータイプモッキングバード場合は、スキャナにそれはあなたが持っているスイッチの場合には、コードから

import java.util.Scanner; 

    Scanner input = new Scanner(System.in); 
    String b = input.next(); 

    String Books[] = { "Harry Potter", "To Kill a Mocking Bird", "Hunger Games" }; 

    for (int t = 0; t < Books.length; t++) { 

     switch (Books[t]) { 

     case "Harry Potter": 
     System.out.println("Getting from switch case " + t + " " + Books[t]); 
      break; 

     case "To Kill a Mocking Bird"   
     System.out.println("Getting from switch case " + t + " " + Books[t]); 
       break; 

     default: 
      break; 
     } 
    } 

答えて

0

で良いでしょう場合は、使用:

if-thenおよびif-then-elseステートメントとは異なり、switchステートメントは にはいくつかの実行パスがあります。スイッチは、 byte、short、char、およびintプリミティブデータ型で動作します。また、 の列挙型(列挙型で説明)、Stringクラス、および特定のプリミティブ型(文字、 Byte、Short、およびInteger)をラップする特殊クラスがいくつかあります( )。

:あなたは一つの選択肢のいずれかあなたの問題を解決し、より良い解決策であるか switchステートメントを使用していますが、switch文であなたの Books、アレイのすべてのケースを置くべき ifステートメントを使用するよりも多くを持っているあなたのケースで

オプション1 if文:

Scanner input = new Scanner(System.in); 
    String b = input.nextLine(); 
    String Books[] = { "Harry Potter", "To Kill a Mocking Bird", "Hunger Games" }; 

    for (int t = 0; t < Books.length; t++) { 
     if(b.equals(Books[t])){ 
      System.out.println("Getting from switch case " + t+1 + " " + Books[t]); 
     } 
    } 

オプション2のswitch文:

Scanner input = new Scanner(System.in); 
    String b = input.nextLine(); 

    switch (b) { 
     case "Harry Potter": 
     System.out.println("Getting from switch case 1 Harry Potter"); 
      break; 

     case "To Kill a Mocking Bird":  
     System.out.println("Getting from switch case 2 To Kill a Mocking Bird"); 
       break; 

     case "Hunger Games":  
     System.out.println("Getting from switch case 3 Hunger Games"); 
       break; 

     default: 
      break; 
    } 

スイッチケースソリューションでは、この場合は適切でないため、配列ブックを使用する必要はありません。

希望これはあなたに役立つでしょう。

+0

それは正しいです。ありがとう。 – myflash

+0

@myflashようこそ。 – Oghli

-1

を認識された場合。文字列の身元を確認するためのequals()を使用する 使用

if (Books[0].equals(b)){ 
    .... 
    } 
    else if (Books[1].equals(b)){ 
    .... 
    } 
-1

をあなただけ

文字列B = input.nextを()に変更する必要があります。

に列B = input.nextLine()。

for (int t = 0; t < Books.length; t++) { switch (Books[t].equals(b)) { case true: System.out.println("Getting from switch case " + t + " " + Books[t]); break; default: break; } }

にスイッチを変更したり、文が、それはswitch文が特定のパス上で動作するJavaのドキュメントによると、この場合

+0

私はこの解決法が彼の場合には役に立たず、悪い習慣だと思います。 スイッチステートメントの目的に反して作成されました より良い解決方法は、スイッチステートメントで配列ブックのケースを自分で定義するか、それを定義することです。 – Oghli

+1

問題を解決しようとしてくれてありがとう@Rafik ..しかし、@ Oghliは正しいです。 – myflash

関連する問題