Auf Thema antworten

Das ist oben kein normales Minuszeichen....

Profis hätten das wohl so gemacht:

[code=Java]    public static void main(String[] args) {

        int td = 0;

        for (Iterator<Integer> iterator = new SubIntIter(new int[]{, }).iterator(); iterator.hasNext();) {

            Integer x = iterator.next();

            Integer y = iterator.next();

            int d = d(x, y);

            if (d > td) {

                td = d;

            }

        }

        System.out.println("td = " + td);

        System.out.println();


        td = 0;

        for (Iterator<Integer> iterator = new SubIntIter(new int[]{1,}).iterator(); iterator.hasNext();) {

            Integer x = iterator.next();

            Integer y = iterator.next();

            int d = d(x, y);

            if (d > td) {

                td = d;

            }

        }

        System.out.println("td = " + td);

        System.out.println();


        td = 0;

        for (Iterator<Integer> iterator = new SubIntIter(new int[]{2, 3,}).iterator(); iterator.hasNext();) {

            Integer x = iterator.next();

            Integer y = iterator.next();

            int d = d(x, y);

            if (d > td) {

                td = d;

            }

        }

        System.out.println("td = " + td);

        System.out.println();


        //////


        td = 0;

        for (Iterator<Integer> iterator = new SubIntIter(new int[]{1, 2, 3, 4, 5,}).iterator(); iterator.hasNext();) {

            Integer x = iterator.next();

            Integer y = iterator.next();

            int d = d(x, y);

            if (d > td) {

                td = d;

            }

        }

        System.out.println("td = " + td);

        System.out.println();


        td = 0;

        for (Iterator<Integer> iterator = new SubIntIter(new int[]{6, 9, 13, 2, -5, 0,}).iterator(); iterator.hasNext();) {

            Integer x = iterator.next();

            Integer y = iterator.next();

            int d = d(x, y);

            if (d > td) {

                td = d;

            }

        }

        System.out.println("td = " + td);

        System.out.println();


        td = 0;

        for (Iterator<Integer> iterator = new SubIntIter(new int[]{1, 1, 1,}).iterator(); iterator.hasNext();) {

            Integer x = iterator.next();

            Integer y = iterator.next();

            int d = d(x, y);

            if (d > td) {

                td = d;

            }

        }

        System.out.println("td = " + td);

        System.out.println();

    }


    static int d(int ax, int ay) {

        int size = Math.abs(ax - ay);

        return size;

    }

}


class SubIntIter implements Iterable<Integer> {

    int[] array;


    SubIntIter(int[] array) {

        this.array = array;

    }


    @Override

    public Iterator<Integer> iterator() {

        return new Iterator<Integer>() {

            int c = 0;

            int d = 0;


            @Override

            public boolean hasNext() {

                return c < ((array.length << 1) - 2);

            }


            @Override

            public Integer next() {

                return array[(c++ / 2) + (d++ % 2)];

            }

        };

    }

}[/code]


[code]td = 0


td = 0


td = 1


td = 1


td = 11


td = 0

[/code]


(An einigen Stellen noch verkomplizierter, aber besser lesbar aufgemalt :( )



Oben