2015-08-13 2 views
-2

В приведенном ниже коде во время компиляции я получаю ошибку «несовместимых типов». Если я использую другую логику, например 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

Попробуйте добавить 'String text = cc.nextLine();' после 'Scanner cc = new Scanner (System.in);', а затем использовать «текст» для вашего коммутатора. – Peut22

+0

ps: если вы используете значимые имена переменных, ваша ошибка будет более понятной. IE: Scanner inputScanner ... –

ответ

0

Вы можете использовать нижеследующий код, взяв ввод от пользователя.

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

1

Я думаю, что вы хотите сделать это:

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

Надеется, что это решит вашу проблему.

+1

Я подозреваю, что OP необходимо ввести переменную, как он ее распечатает позже. –

+0

Да, я согласен, и все готово. –

+0

Я получаю эту ошибку: java.util.Scanner [delimiters = \ p {javaWhitespace} +] [position = 4] [match valid = true] [required input = false] [source closed = false] [skipped = false] [разделитель групп = \,] [десятичный разделитель = \.] [положительный префикс =] [negati ve prefix = \ Q- \ E] [положительный суффикс =] [отрицательный суффикс =] [NaN string = \ Q ? \ E] [infinity string = \ Q∞ \ E] относится к NEW ZEALAND – Shreyas

Смежные вопросы