在switch语句中使用字符串,通过从用户输入

问题描述:

在下面的代码中,在编译期间,我得到'incompatible types'错误。 如果我使用其他逻辑,如charAt(0)和所有,这工作正常。 没有任何方法可以在java switch语句中使用字符串吗? 我使用JDK 7.在switch语句中使用字符串,通过从用户输入

谢谢。

import java.util.Scanner; 

class cCode 
{ 
    public static void Main(String args [])` 
    { 
     System.out.println("Enter country code\nChoices: IND, USA, JPN, NZ, WI"); 
     Scanner cc = new Scanner(System.in); 
     switch(cc) 
     { 
      case "IND": 
       System.out.println(cc+" refers to INDIA"); 
       break; 
      case "USA": 
       System.out.println(cc+" refers to UNITED STATES"); 
       break; 
      case "JPN": 
       System.out.println(cc+" refers to JAPAN"); 
       break; 
      case "NZ": 
       System.out.println(cc+" refers to NEW ZEALAND"); 
       break; 
      case "WI": 
       System.out.println(cc+" refers to WEST INDIES"); 
       break; 
      default: 
       System.out.println("Invalid choice"); 
     } 
    } 
} 
+1

cc是扫描仪类型的对象,您正在将它与字符串进行比较。 –

+0

尝试在'Scanner cc = new Scanner(System.in);'后面添加'String text = cc.nextLine();',然后在交换机上使用'text'。 – Peut22

+0

ps:如果你使用重要的变量名,你的错误会更清晰。 IE:Scanner inputScanner ... –

您可以通过从用户处输入以下代码。

import java.util.Scanner; 
public class cCode { 

public static void main(String args[]) { 

    System.out.println("Enter country code\nChoices: IND, USA, JPN, NZ, WI"); 
    Scanner cc = new Scanner(System.in); 
    String txt = cc.nextLine(); 
    switch (txt) { 
     case "IND": 
      System.out.println(txt + " refers to INDIA"); 
      break; 

     case "USA": 
      System.out.println(txt + " refers to UNITED STATES"); 
      break; 

     case "JPN": 
      System.out.println(txt + " refers to JAPAN"); 
      break; 

     case "NZ": 
      System.out.println(txt + " refers to NEW ZEALAND"); 
      break; 

     case "WI": 
      System.out.println(txt + " refers to WEST INDIES"); 
      break; 

     default: 
      System.out.println("Invalid choice"); 
    } 
}} 
+0

谢谢。但是我可以知道nextLine做什么吗? :| 我很新的Java所以... – Shreyas

+0

你可以看到:http://stackoverflow.com/questions/22458575/whats-the-difference-between-next-and-nextline-methods-from-scanner-class – Rafiq

我想你想这样做:

String theText = cc.next(); 
switch(theText) { 
    //your code. 
} 

希望这能解决你的问题。

+1

我怀疑OP需要在他/她稍后打印时放入一个变量。 –

+0

是的,我同意,它完成了。 –

+0

我也得到这个错误: java.util.Scanner [delimiters = \ p {javaWhitespace} +] [position = 4] [match valid = true] [need input = false] [source closed = false] [skip = false] [group separator = \,] [decimal separator = \。] [positive prefix =] [negati ve prefix = \ Q- \ E] [positive suffix =] [negative suffix =] [NaN string = \ Q ?\ E] [infinity string = \Q∞\ E]指NEW ZEALAND – Shreyas