#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();» Я изменю приведенный выше код, чтобы отразить это.