Ho fatto questa semplice classe di prova e con alcuni input il risultato restituito è sbagliato..

codice:
public class Prova {
    
    public static void main(String[] args) {


        int[] a1 = {-1, 5, 3, 0, 1, 1, -3, 0, -5, 7, -1, 0};
        printArray(a1, "a1");
        System.out.println("Risultato: " + maxSeq(a1));


        int[] a2 = {1, 5, 3, 10, 1, 1, 3};
        printArray(a2, "a2");
        System.out.println("Risultato: " + maxSeq(a2));


        int[] a3 = {-1, -5, -3, 0, -1, -1, -3, 0, -5}; //non va
        printArray(a3, "a3");
        System.out.println("Risultato: " + maxSeq(a3));


        int[] a4 = {1, -5, -3, 10, 1, 1, -3, 0, -5, 7, -1, -20, -2};
        printArray(a4, "a4");
        System.out.println("Risultato: " + maxSeq(a4));


        int[] a5 = {1, -5, -3, 10, 1, 1, -3, 0, -5, 7, -1, -20, -2, 0, -6}; //non va
        printArray(a5, "a5");
        System.out.println("Risultato: " + maxSeq(a5));


    }


    public static int maxSeq(int[] a) {
        int max = 0;
        int att = 0;
        int l = a.length; //12
        int i = 0;
        while(i < l-1) {
            if(a[i] <= 0) {
                att++;
                if(!(a[i+1] <= 0)) {
                    max = att;
                    att = 0;
                }
                i++;
            }
            else {
                i++;
            }
        }
        return max;
    }


    public static void printArray(int[] a, String name) {
        System.out.println();
        System.out.println();
        System.out.print(name + ": { ");
        for(int i = 0; i < a.length; i++) {
            System.out.print(a[i] + " ");
        }
        System.out.println("}");
    }


}
Più precisamente non va nel caso siano tutti negativi/zeri e nel caso ci siano dei numeri negativi/zero finali..

Il primo caso ho capito perchè non restituisce il valore giusto, è dovuto dal fatto che non aggiorno "max", ma se la aggiornassi, allora non andrebbe più negli altri casi...