Questa è una domanda molto strana e abbastanza specifica.Non si utilizza un'istruzione if in Java
definitiva sto cercando di scrivere un convertito programma che prende in sorgente di Java, e la trasforma in modo tale che non fa uso (tra l'altro)
- Array
- Loop
- metodi definiti dall'utente
- Se dichiarazioni
questa è una sfida che mi ero prefissato, dopo il mio insegnante mi ha detto che era impossibile scrivere un programma senza usare queste cose.
La maggior parte di questi ha funzionato, inclusa la funzione di inlining e la sostituzione di array, tuttavia non riesco a capire come gestire un'istruzione if.
In C++ userei etichette e gotos e forse?: Tuttavia Java non supporta le istruzioni GOTO.
mia domanda è questa: Data una sezione di codice,
if(CONDITION)
{
//More code in here
}
Come può trasformarla in modo tale che essa è funzionalmente la stessa, tuttavia non utilizzare la parola chiave se. Si noti che anche le strutture del ciclo sono fuori questione.
Dato questo, sarebbe facile creare altre istruzioni if else. Tuttavia, non sono sicuro di come creare loop utilizzando questo, poiché non esiste alcuna istruzione GOTO e i metodi non sono disponibili.
Edit: prega di notare che gli interruttori sono, inoltre, non autorizzati, né è la ricorsione (esclusa dal fatto che non si può definire metodi utente, e una funzione principale ricorsiva non avrebbe funzionato con tutti i programmi) L'operatore?: non funziona per tutte le situazioni. AFAIK non è possibile chiamare una funzione void con?: Poiché desidera assegnare un valore come parte della sua operazione.
Queste condizioni provengono dall'IB Computer Science SL richiede corso, sto prendendo HL e come classe stavamo ridendo dei fattori di "padronanza" per SL che includono dichiarazioni "se" (E se in realtà 3/15 di loro sono i metodi definiti dall'utente con parametri e tipi di ritorno). La sfida è efficacemente a FAIL un test di padronanza in SL mentre sta ancora producendo un programma che funzioni correttamente.
Risposta: (By bdares)
String result = (CONDITION)?"0":"A";
try{
Integer.parseInt(result);
//Condition is true
} catch(NumberFormatException e){
//Condition is false
}
Un ciclo che utilizza goto ed etichette è ancora un ciclo, utilizza solo un'altra sintassi. Per eliminare veramente i loop, è necessario srotolarli, ovvero inserire le istruzioni nel ciclo da eseguire in sequenza. Quale sarà impossibile per cicli infiniti (ad esempio 'while (1)'.) –
@JoachimPileborg non è vero; non esclude di usare i loop di librerie pre-scritte, quindi potrebbe (teoricamente) scrivere 'java.util.Loop (myObject.class, 10);' se tale libreria esistesse. Così com'è, può hackerare una soluzione da, ad esempio, oggetti della collezione. – bdares
http: //www.antiifcampaign.com/comunque si tratta di OOP migliorato (rimuovendo la logica tesa e nascosta annidata come IF attraverso un design migliore) – earcam