Отсутствие оператора if в Java

Это очень странно и довольно специфично вопрос.

В конечном итоге я пытаюсь написать программу convert, которая принимает исходный код Java и преобразует его таким образом, чтобы он не использовал (Среди прочего)

  • Массивы
  • Циклы
  • Определяемые пользователем методы
  • Если операторы

Это вызов, который я поставил перед собой после того, как мой учитель сказал мне, что невозможно написать программу без использования этих вещей.

Я отработал большинство из них, включая встраивание функций и подстановку массивов, однако я не могу понять, как управлять оператором if.

В C ++ я бы использовал метки и gotos и, возможно,?:, Однако Java не поддерживает операторы GOTO.

У меня такой вопрос: Учитывая часть кода,

if(CONDITION)
{
   //More code in here
}

Как можно преобразовать его так, чтобы он был функционально таким же, но не использовал ключевое слово if. Обратите внимание, что о циклических структурах также не может быть и речи.

Учитывая это, было бы легко создать операторы else и else if. Однако я также не уверен, как создавать циклы, используя это, поскольку нет оператора GOTO и о методах не может быть и речи.

Изменить: Обратите внимание, что переключатели также не разрешены, как и рекурсия (исключено тем фактом, что вы не можете определять пользовательские методы, а рекурсивная основная функция не будет работать с каждой программой) {{ 1}} Оператор?: Работает не во всех ситуациях.AFAIK вы не можете вызвать функцию void с помощью?: Поскольку она хочет присвоить значение как часть своей операции.

Эти условия взяты из IB Computer Science SL требует курса, я беру HL, и как класс мы смеялись над факторами «мастерства» для SL, которые включают утверждения «если» (и если факт 3/15 из них 'Определяемые пользователем методы с параметрами и возвращаемыми типами) Проблема состоит в том, чтобы ПРОЙДИТЬ тест на мастерство в SL, при этом создав программу, которая работает правильно.

Ответ: (By bdares)

String result = (CONDITION)?"0":"A";
try{
    Integer.parseInt(result);
    //Condition is true
} catch(NumberFormatException e){
    //Condition is false
}
5
задан James 31 October 2011 в 08:49
поделиться