2013-10-17 12 views

risposta

11

Non vedo alcuna semplificazione possibile. Vorrei semplicemente ignorare l'avvertimento.


Aggiornamento: Tuttavia, se il metodo simile a questa:

if(point.x < minX || point.x > maxX || point.y < minY || point.y > maxY) 
    return false; 
return true; 

si potrebbe cambiare a questo:

return !(point.x < minX || point.x > maxX || point.y < minY || point.y > maxY); 

O anche:

return point.x >= minX && point.x <= maxX && point.y >= minY && point.y <= maxY; 

I d non so se questo è "semplificato" per gli umani.

+0

Questo era davvero il caso. Ero alla ricerca di una semplificazione all'interno della clausola if. Ecco perché non sono riuscito a trovarlo. Sono andato con il tuo ultimo suggerimento; ha più senso per me. – kiel814

0

Provare a separarlo in due istruzioni if: una per le coordinate "x", una per "y".

if(point.x < minX || maxX < point.x) 
    return false; 
else if(point.y < minY || maxY < point.y) 
    return false; 
+0

Questo non è equivalente a ciò che l'OP sta chiedendo. – Smit

3

Ogni volta che IntelliJ avverte di una possibile semplificazione, offre spesso per eseguire la semplificazione (facendo clic sulla lampadina gialla). Cosa succede se lo fai?

+0

Nella mia versione non c'era la lampadina, ma c'era un suggerimento per lo strumento cliccabile. Grazie! – kiel814

+0

Grazie mille ... funziona per me –

0

Forse si potrebbe provare qualcosa di simile:

return new Rectangle(minX, maxX, minY, maxY).contains(point); 

Per quanto riguarda la semplificazione dal punto di vista algebra booleana, è necessario essere alla ricerca di risposta di Martin. In effetti, non hai nemmeno bisogno di semplificarlo perché il compilatore lo farà automaticamente per te. Ad esempio, !(a && b) sarà semplificato a !a || !b perché è più rapido controllare ciascuna variabile separatamente anziché creare una variabile temporanea e controllarne il valore.

Problemi correlati