2011-12-21 72 views
0

這裏我試圖用鏈表實現一個簡單的隊列。我在這裏使用了Bufferreader和readline。我將「choice」聲明爲字符串。但是我無法傳遞一個字符串變量來切換語句。如果我將它聲明爲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」','案「2」'等等,因爲選擇的是String類型 – 2011-12-21 16:00:02

+1

這是否編譯呢? – home 2011-12-21 16:00:06

+1

自從幾個月前發佈的Java 7以來,您可以在'switch'語句中使用'String'。如果您使用Java 6或更早版本,則不能在'switch'語句中使用'String'。 – Jesper 2011-12-22 12:04:08

回答

1

使用int choiceNum = Integer.parseInt(choice);和交換機上。

請注意,在Java 7中,您實際上可以打開字符串,但您需要case "1":

0

付諸TA switch語句之前解析字符串爲整數:

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

好了另一個答案保持字符串:

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

如果它始終將是一個一個字符輸入,你可以將其轉換爲char和開關上使用單引號...

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 2011-12-21 23:49:05

相關問題