как совместить операторы switch и if else

Я посещаю онлайн-класс по Java, и учитель попросил следующее: Напишите программу меню, которая запрашивает у пользователя число, обозначающее четыре основных математических уравнения (сложение, вычитание, умножение, деление). Используя структуру if/else для выполнения необходимой операции, попросите пользователя ввести данные и решите уравнение. Я новичок в этом, но я не вижу смысла в if/else, но я думаю, что это не имеет значения.

Если я использую случай 1, 2, 3, 4, как показано ниже, для определения операции, как мне сослаться на случай с помощью «оператора If»?

int userSelection;
double x;        
double y;        
double answer;

switch ( userSelection ) {
   case 1:
        TextIO.putln("Let's add! ");
        TextIO.putln();
        TextIO.putln("Enter the first number: ");
        x = TextIO.getlnDouble();
    TextIO.putln("Enter the second number: ");
        y = TextIO.getlnDouble();
        break;

// Я подумал, что могу использовать 'If' вот так

        if (case 1);  // I don't know how to refference this correctly
        answer = x + y;
        TextIO.putln( x 'plus' y 'equals' answer);

Заранее спасибо!


person jjason89    schedule 27.06.2010    source источник


Ответы (5)


Мне кажется, что ваш инструктор не хочет, чтобы вы использовали оператор switch для начала, а просто использовали структуру управления потоком if:

if(booleanExpression)
{

}
else if(booleanExpression2)
{

}
person Oded    schedule 27.06.2010
comment
Если вы используете прямой оператор if, как вы выполняете это требование: запрашиваете у пользователя число, обозначающее четыре основных математических уравнения? - person Chris; 27.06.2010
comment
Я не уверен, что задавание пользователю этих вопросов напрямую связано с требованием использовать операторы if для решения уравнений. - person Oded; 27.06.2010
comment
Я делал этот путь слишком сложным, и мне не нужно было использовать оператор switch. Просто составьте список вариантов. Я не мог видеть леса из-за всех деревьев. Спасибо всем!!! - person jjason89; 28.06.2010

switch используется для одной заданной переменной/выражения, а затем используются случаи для того, какое это значение, но поскольку вы не тестируете одну переменную/выражение, это неприменимо, вместо этого вы должны использовать структуру if-elseif-else.

person Sarfraz    schedule 27.06.2010

Операторы switch case являются структурной альтернативой использованию вложенных операторов if..else, в которых вы хотите запустить логику дифференциальной сети для разных значений числового или числового типа данных. Он не сочетается с if..else и двумя разными подходами к решению условных задач. Какой из них лучше подходит, зависит от состояния, которое вы оцениваете.

Если я правильно понимаю ваш код, то я думаю, что вы ищете что-то вроде этого:

switch ( userSelection ) {  
case 1:  
    TextIO.putln("Let's add! ");  
    TextIO.putln();  
    TextIO.putln("Enter the first number: ");  
    x = TextIO.getlnDouble();  
    TextIO.putln("Enter the second number: ");  
    y = TextIO.getlnDouble();  
    answer = x + y;    
    TextIO.putln( x + " plus " + y + " equals " + answer);   
    break;  
case 2:  
    ... //oh, I don't know. but I would guess: let's subtract!  
    break; 
case 3:  
    ... //let's multiply!
    break; 
case 4:  
    ... //let's divide! 
    break; 

}

person eladidan    schedule 27.06.2010
comment
Вот как я начал, но поскольку она хотела выбрать букву для выбора операции и if/else для операций, я подумал, что буду использовать статус Case для получения пользовательского ввода. 1 для добавления, 2 для вычитания и так далее. Тогда, если бы я мог использовать IF 'case = 1', тогда выполните следующую математическую операцию.??? - person jjason89; 28.06.2010

Вот код presudo для перезаписи оператора CASE:

IF (Case==1) THEN
  *What to do when Case==1.*
ELSE IF (Case==2) THEN
  *What to do when Case==2.*
ELSE IF (Case==3) THEN
  *What to do when Case==3.*
ELSE IF (Case==4) THEN
  *What to do when Case==4.*
END IF

Однако вам придется кодировать это на Java. :) Удачи с вашим заданием.

person Gert Grenander    schedule 27.06.2010
comment
Похоже, у вашего первого if есть === беженец из JavaScript - person barrowc; 28.06.2010
comment
@barrowc - Ой... это была опечатка. Исправлено. Спасибо. :) - person Gert Grenander; 28.06.2010

Вы включаете userSelection, поэтому userSelection уже имеет нужное вам значение; вы можете сослаться на значение, сославшись на переменную userSelection:

if (userSelection == 1) {
    // add
} else if (userSelection == 2) {
   // subtract
} else if (userSelection == 3) {
   // multiply
} else if (userSelection == 2) {
   // divide
}
person Ian R. O'Brien    schedule 28.06.2010