Ho capito quello che vuoi fare, ma così com'è il tuo codice non funziona (non compilerebbe nemmeno!).
Naturalmente ci sono molti modi per risolvere il tuo problema (ogni problema, in realtà), ma per come hai strutturato l'algoritmo ne vedo due in particolare:
1) esegui un primo ciclo su "i" per controllare la prima condizione, poi esegui un secondo ciclo (sempre su "i") per controllare la seconda condizione e alla fine, sulla base dei due controlli, valorizzi "risposta";
2) esegui un unico ciclo su "i" e, ad ogni iterazione, verifichi sia la prima sia la seconda condizione. Alla fine valorizzi "risposta" come nel caso sopra.
Il codice che hai scritto è "ibrido": presenta caratteristiche sia della prima che della seconda soluzione... ma così com'è non va bene.
Provo a scriverti il codice (riformattato, spero sia chiaro lo stesso) per la soluzione 1)
codice:
public static boolean m(int a[])
{
//inserisco la prima condizione (per ogni 0<=j<i vale che se j è pari allora A[j]<A[i])
boolean risposta = true;
boolean left = true;
for (int i = 1; i < a.length; i++)
{
for (int j = i - 1; j < i; j++)
{
if(j % 2 == 0 && a[j] < a[i])
{
}
else
{
left = false;
}
}
}
//seconda condizione un po diversa da quella proposta da Lomio(ditemi se va bene)
boolean right = true;
for (int i = 1; i < a.length - 1; i++)
{
if (a[i] == a[i - 1] + a[i + 1])
{
}
else
{
right = false;
}
}
//controllo finale
if (left || right)
{
}
else
{
risposta = false;
}
return risposta;
}
Per il resto, mi sembra vada bene così.