Получение синтаксической ошибки в токене «{«, переключаемые метки ожидаются после этого токена. Попытка использовать пользовательский ввод в операторах switch

#java #switch-statement

#ява #оператор переключения #java

Вопрос:

Я очень новичок в Java и пытаюсь реализовать пользовательский ввод в операторе switch. Я получаю «синтаксическую ошибку в токене «{«, SwitchLabels, ожидаемую после этого токена» ошибка в начале моего оператора Switch». Любая помощь была бы потрясающей. Спасибо. (Кстати, первый пост в stackoverflow, извините, если я перепутал форматирование)

 import java.util.*;

class FahrenheitToCelsiusBothInput {

public static void main(String[] args) {
float Fahrenheit = 32;
float Celsius = 0;

Scanner option = new Scanner(System.in);

int userInput = option.nextInt();
switch(userInput) {                      //Getting "Syntax error on token "{", SwitchLabels expected after this token"
System.out.println("Do You Want to Enter Fahrenheit or Celsius: ");
case Fahrenheit:
        System.out.println("Enter temperature in Fahrenheit: ");
        Fahrenheit = in.nextInt();
        Fahrenheit = (float) ((Fahrenheit - 32) / 1.8000);
        System.out.println("Temperature in Celsius = "   Fahenheit);  System.out.println("Thank You! ");
   break; 
case Celsius:
        System.out.println("Enter temperature in Celsius: ");
        Celsius = in.nextInt();
        Celsius = (float) ((Celsius * 1.8000)   32);
        System.out.println("Temperature in Fahrenheit = "   Celsius);  System.out.println("Thank You! ");
    break;  
default:
        System.out.println("Something went wrong! ");
    break;
        }
    }
}
  

Ответ №1:

Эта конкретная проблема связана с этой строкой кода:

 System.out.println("Do You Want to Enter Fahrenheit or Celsius: ");
  

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

Ваш оператор case будет сравнивать значение float с значением int. Вы можете просто изменить его на case 1: и case 2: (или case 0 и case 32), чтобы устранить эту проблему. Однако лучшим способом сделать это было бы с помощью строк или пользовательского меню.

Исправленный код ниже

 import java.util.*;

class FahrenheitToCelsiusBothInput {

public static void main(String[] args) {
float Fahrenheit = 32;
float Celsius = 0;

Scanner option = new Scanner(System.in);

System.out.println("Do You Want to Enter Fahrenheit or Celsius: ");
int userInput = option.nextInt();

switch(userInput) {                      //Getting "Syntax error on token "{", SwitchLabels expected after this token"
case 0:
        System.out.println("Enter temperature in Fahrenheit: ");
        Fahrenheit = option.nextInt();
        Fahrenheit = (float) ((Fahrenheit - 32) / 1.8000);
        System.out.println("Temperature in Celsius = "   Fahrenheit);  System.out.println("Thank You! ");
   break; 
case 1:
        System.out.println("Enter temperature in Celsius: ");
        Celsius = option.nextFloat();
        Celsius = (float) ((Celsius * 1.8000)   32);
        System.out.println("Temperature in Fahrenheit = "   Celsius);  System.out.println("Thank You! ");
    break;  
default:
        System.out.println("Something went wrong! ");
    break;
        }
    }
}
  

РЕДАКТИРОВАТЬ: Скорректировал код, чтобы он действительно работал.

Комментарии:

1. Привет, у меня возникла еще одна проблема, если бы ты мог мне помочь @rctillotson. Я получаю эти ошибки с помощью приведенного выше кода. Исключение в потоке «main» java.util. Исключение InputMismatchException в java.util. Scanner.throwFor(неизвестный источник) в java.util. Scanner.next(неизвестный источник) в java.util. Scanner.nextInt(неизвестный источник) в java.util. Scanner.nextInt (неизвестный источник)

2. Это была моя ошибка. Вам нужно поставить «System.out.println(«Вы хотите ввести градусы Фаренгейта или Цельсия: «);» «ПЕРЕД int userInput = option.nextInt();» Я изменю приведенный выше код, чтобы отразить это.