2015-09-09 2 views
-5

У меня есть код, написанный в if/else Statement, и он работает, но у меня есть проблема с записью его с помощью оператора switch, поскольку кажется, что там являются проблемами в моих переменных и символах.Написание программы с использованием оператора switch Case (с использованием букв ABCD not int)

Не могли бы вы указать, что не так, и помочь мне исправить это?

Мой исходный код ниже.

import java.util.Scanner; 
import java.io.*; 

public class CourseCodeSWITCH { 

    public static void main(String[] a) { 

     Scanner in = new Scanner (System.in); 
     String code; 
     System.out.print("Enter Course Code: "); 
     code = in.nextLine(); 
     switch (code) { 
      case A: code = "Accounting"; 
        break; 
      case B: code = "Banking and Finance"; 
        break; 
      case C: code = "Computer Science"; 
        break; 
      case D: code = "Dentistry"; 
        break; 
      case E: code = "Engineering"; 
        break; 
     default: 
       System.out.println("Invalid Course Code"); 
       break; 
     } 
    } 
} 
+1

Относно '«... есть проблемы в моих переменных и символов»' - Поясните, пожалуйста, что вы имеете в виду под «проблемами. .. "? Сообщения об ошибках? Разве это не компилируется? Пожалуйста, помогите нам. –

+4

Первые A, B, C и т. Д. Должны быть переменными, но они нигде не определены. Я думаю, вы хотели использовать строки «A», «B» и т. Д. – nbro

+0

@Hovercraft он не компилируется, а сообщение об ошибке - это символ: переменная E местоположение: класс CourseCodeSWITCH 5 ошибок –

ответ

2

В Java 7/8 можно определить String сравнить code с. В более ранних версиях вы можете использовать char или enum.

public static void main(String[] a) { 

    Scanner in = new Scanner (System.in); 
    String code; 
    System.out.print("Enter Course Code: "); 
    code = in.nextLine(); 
    switch (code) { 
     case "A": 
      code = "Accounting"; 
       break; 
     case "B": 
      code = "Banking and Finance"; 
       break; 
     case "C": 
      code = "Computer Science"; 
       break; 
     case "D": 
      code = "Dentistry"; 
       break; 
     case "E": 
      code = "Engineering"; 
       break; 
    default: 
      System.out.println("Invalid Course Code"); 
      break; 
    } 

Дополнительно здесь example от Oracle.

+0

@ LanguidSquid Я вижу, моя проблема была, я не приложил буквы с буквой «», как в букве E, чтобы быть «Е». Это была проблема. Спасибо, сейчас работает ... Миллион спасибо! :) –

+0

@Marged jcreator pro ver 4.50 –

3

Вы используете A, B, C, как метки, но это не так, как работает оператор switch. Давайте посмотрим на только одно заявление:

switch (code) { 
    case A: code = "Accounting"; 
     break; 

Вы переключения на code ... это означает, что вы собираетесь проверки содержимого переменной code.

Далее вы объявляете случай. В приведенном выше случае вы фактически говорите:

if (code == A) 
    code = "Accounting"; 
    break; 

Теперь у вас есть пара ошибок. Прежде всего, A не определен нигде, поэтому вы сразу же столкнетесь с ошибками во время компиляции. Вероятно, вы захотели использовать значение String ("A"). Во-вторых, вы просто переназначаете code вместо вывода, как в вашем исходном if-statement.

Вы, вероятно, хотите переключатель, который выглядит ближе к следующему:

switch(code) { 
    case "A": 
     System.out.println("Assignment"); 
     break; 
    case "B": 
     System.out.println("Banking and Finance"); 
     break; 
    // and so forth 
} 
+1

Благодарим вас за объяснение. мой учитель на самом деле не дал себе ясности в объяснении всего. Это похоже на то, что я получил менее 15% в нашей лекции по этой теме, и все же он дал нам sooooo много HW, и поэтому я остался с обучением больше через сеть и вы, ребята .. Извините, я не могу проверить ваш, так как другой пришел первым, и поэтому я могу сделать это, чтобы поддержать вас, хотя я должен сказать, что вы так хорошо это объяснили .. Спасибо! –