Esta es una pregunta muy extraña y bastante específica.No se utiliza una instrucción if en Java
En última instancia Estoy intentando escribir un convertido programa que toma en fuente de Java, y lo transforma de tal manera que no utiliza (entre otras cosas)
- matrices
- Bucles
- métodos definidos por el usuario
- Si los estados
Este es un reto que me propuse, después de que mi maestro me dijo que era imposible escribir un programa sin usar estas cosas.
Tengo la mayoría de estos funcionó, incluyendo la función en línea y la sustitución de matriz, sin embargo, no puedo resolver cómo administrar una instrucción if.
En C++ usaría etiquetas y gotos y tal vez?:, Sin embargo, Java no es compatible con las instrucciones GOTO.
Mi pregunta es la siguiente: Dada una sección de código,
if(CONDITION)
{
//More code in here
}
Cómo puede transformarlo tal que es funcionalmente la misma, sin embargo no utilizar la palabra clave if. Tenga en cuenta que las estructuras de bucle también están fuera de cuestión.
Dado esto, sería fácil crear sentencias else y else if. Sin embargo, tampoco estoy seguro de cómo crear bucles utilizando esto, ya que no hay instrucción GOTO y los métodos están fuera de cuestión.
Editar: Tenga en cuenta que los interruptores están también prohibidos, ni es la recursividad (descartada por el hecho de que no se puede definir métodos de usuario, y una función principal recursivo no quiere trabajar con todos los programas) El operador?: no funciona para todas las situaciones AFAIK no puede llamar a una función vacía con?: Como quiere asignar un valor como parte de su operación.
Estas condiciones provienen del IB Computer Science SL requiere curso, estoy tomando HL y como clase nos reíamos de los factores de "maestría" para SL que incluyen declaraciones 'if' (Y si el hecho 3/15 de ellos son 'Métodos definidos por el usuario con params y tipos de devolución) El desafío es, efectivamente, FALLAR una prueba de dominio en SL mientras se sigue produciendo un programa que funciona correctamente.
Respuesta: (Por bdares)
String result = (CONDITION)?"0":"A";
try{
Integer.parseInt(result);
//Condition is true
} catch(NumberFormatException e){
//Condition is false
}
Un bucle que usa goto y etiquetas sigue siendo un bucle, solo está usando otra sintaxis. Para deshacerse realmente de los bucles, debe desenrollarlos, es decir, colocar las instrucciones en el bucle para que se ejecuten secuencialmente. Lo cual será imposible para bucles infinitos (por ejemplo, 'while (1)'.) –
@JoachimPileborg no es verdadero; él no descarta utilizar los bucles de bibliotecas preescritas, por lo que podría (teóricamente) escribir 'java.util.Loop (myObject.class, 10);' si existiera dicha biblioteca. Tal como está, él puede hackear una solución de, digamos, objetos de colección. – bdares
http: //www.antiifcampaign.com/sin embargo, esto se trata de una OOP mejorada (eliminando la lógica filtrada y oculta anidada como IF a través de un mejor diseño) – earcam