2011-12-21 10 views
0

ここでは、リンクリストを使って単純なキューを実装しようとしています。私はここでBufferreaderとreadlineを使いました。私は文字列として "選択"を宣言しました。しかし、switch文に文字列変数を渡すことはできません。 Integer変数として宣言した場合、readlineメソッドはそれを受け入れません。誰でも助けることができますか?switch文で文字列を使う方法

import java.lang.*; 
import java.util.*; 
import java.io.*; 



public class Main { 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 
    // TODO code application logic here 
    LinkedList l1=new LinkedList(); 
    BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); 
    System.out.println("Enter the no of elements to be inserted: "); 
    String str; 
    str=bf.readLine(); 
    System.out.println("Enter Your Choice: "); 
    System.out.println("1->Insert 2->Delete 3->Display 4->Exit"); 
    String choice; 
    choice=bf.readLine(); 
    for(;;){ 
    switch(choice) { 

     case 1:l1.addLast(bf); 
       break; 
     case 2:l1.removeFirst(); 
     break; 
     case 3: 
      System.out.println("The contents of Queue are :" +l1); 
      break; 
     default:break; 

    } 

} 

} 
+0

か、選択肢は文字列型 –

+1

あるので、これは全くコンパイルん 'ケース「1」'、 'ケース「2」'などにケースを切り替える変更? – home

+1

数ヶ月前にリリースされたJava 7以降、 'switch'文で' String'を使うことができます。 Java 6またはそれ以前のバージョンを使用している場合は、 'switch'ステートメントで' String'を使用することはできません。 – Jesper

答えて

1

int choiceNum = Integer.parseInt(choice);を使用してください。

Java 7では、実際には文字列を切り替えることができますが、case "1":が必要です。

0

TAのswitch文にそれを置く前に、整数に文字列を解析:

int choice; 
choice = Integer.parseInt(bf.readLine()); 
0

それがint型である場合、あなたはInteger.parseInt()でintにあなたの文字列を解析する、またはnextInt()の代わりにScannerを使用する場合がありますBufferedReaderを使用してファイルから直接intを取得します。

1

オーケー別の答えがString保つ:常に1つの文字入力になるだろう場合、あなたはcharに変換し、単一引用符を使用していることに切り替えることができます

if (choice.equals("1")) { 
    ... 
} else if (choice.equals("2")) { 
1

を...

0

試してみますこの

choice = Integer.parseInt(bf.readLine());

0

私はLinkedListを使用するには宣言中にデータ型を指定する必要があると思います。

LinkedList<String> l1 = new LinkedList<String>(); 

これにより、データ型の文字列のリンクリストが作成されます。その後、解析関数を使ってStringをintに変換することができます。

int choice; 
choice = Integer.parseInt(bf.readLine()); 
+0

必ずしもそうではありません。そうすることは推奨されませんが、生の 'LinkedList'(または他の一般的なもの)を使うことができます。最初に追加する項目によって、タイプが決まります。 – corsiKa

関連する問題