Zahlenpaare ausgeben

alex2345

Mitglied
Die folgende Klasse Zahlenbezeichnungen enthalt im Attribut zahlen die Bezeichnungen
der Zahlen "eins","zwei","drei","vier",. . . aufsteigend bis zu einem
Hochstwert.
import java . u t i l . Ar rayLi s t ;
public clas s Zahlenbezeichnungen f
private Ar rayLi s t<St r ing> zahl en ;
public void zahlenpaareAusgeben ( ) f
. . .
g
g
Implementieren Sie die Methode zahlenpaareAusgeben, die alle Paare von Zahlenbezeichnungen
in zahlen mittels System.out.println() ausgibt, wobei die Ausgabe
der Paare in folgender Reihenfolge erfolgen muss:
eins eins
eins zwei
zwei eins
eins drei
zwei zwei
drei eins
eins vier
zwei drei
drei zwei
vier eins
eins funf
. . .
Hinweis: Die Summe der beiden ausgegebenen Zahlen muss also jeweils gleich
bleiben oder um 1 wachsen. Eine for-each-Schleife ist fur diese Aufgabenstellung
eher weniger geeignet. Beachten Sie, dass keine Zahlenbezeichnungen ausgegeben
werden konnen, die groer als der in zahlen gespeicherte Hochstwert sind.

Habe am Donnerstag Abschlussprüfung und wollte ein paar alte Beispiele üben. Nur komme ich bei diesem absolut nicht zusammen. (hier der Originallink: http://institute.unileoben.ac.at/infotech/lehre/angaben/it2-test1-2007-11-12.pdf)

Habe nur die linke Seite geschafft. Habs mit einem Array zum besseren ausprobieren gemacht. Auf eine ArrayList das dann umzuschreiben wäre kein Problem.

Ein bisschen was hätt ich ja und für Hilfe wäre ich sehr dankbar.

Java:
import java.util.*;

public class Zahlenbezeichnungen
{

    public Zahlenbezeichnungen()
    {

    }

    public void zahlenpaareAusgeben(int[]a)
    {
        int counter = 1;
        while(counter < a.length)
        {
            for(int i = 0; i < counter; i++)
            {
                System.out.println(a[i]);
            }
            counter++;
        }
    }
}
 
Du brauchst zwei verschachtelte Schleifen: Die äußere zählt die Summe des Paars hoch. Die innere zählt den ersten Wert des Paares hach (der zweite Wert ist dann die Differenz zwischen Paarsumme und erstem Wert).
 
Danke für den Tipp. Habs jetzt mal so gemacht:

Java:
import java.util.*;

public class Zahlenbezeichnungen2
{

    private ArrayList<String> zahlen;

    public Zahlenbezeichnungen2()
    {

    }

    public void zahlenpaareAusgeben(int[]a)
    {
        int counter = 1;
        int k = 1;
        int l = 0;
        while(counter < a.length)
        {
            for(int j = 0; j < counter; j++)
            {
                k++;
                for(int i = 0; i < counter; i++)
                {
                    l = k - a[i];
                    System.out.println(a[i] + " " + l);
                }
                counter++;
            }
        }
    }
}
Ich kriege aber in der Zeile: l = k - a; eine OutofBoundsException. Normal sollte ja meine Schleife vorher abbrechen. Muss ich irgendeinen Startwert anders setzen?
 
Ok, mir zählt das i zu weit rauf weil die Abbruchbedingung der while-Schleife nicht erreicht wird. Muss nur noch herausfinden wie das geht.
 
Glaub das sollte so gehen.
Java:
public class Zahlenbezeichnungen3
{

    public Zahlenbezeichnungen3()
    {

    }

    public void zahlenpaareAusgeben(int[]a)
    {
        int counter = 1;
        int k = 1;
        while(counter < a.length)
        {
                for(int i = 0; i < counter; i++)
                {
                    int l = 0;
                    l = counter + 1;
                    k = l - a[i];
                    System.out.println(a[i] + " " + k);
                }
                counter++;
        }
    }
}
 
Das macht aber nicht, was die Aufgabenstellung will (so wie ich sie verstanden habe). Ich dachte an sowas:

Java:
public static void zahlenpaareAusgeben(String[] namen) {
    for(int summe = 2; summe < namen.length + 2; summe++) {
        for(int erster = 1; erster < summe; erster++) {
            int zweiter = summe - erster;
            System.out.println(namen[erster-1] + " " + namen[zweiter-1]);
        }
    }

}

zahlenpaareAusgeben(new String[]{"eins","zwei","drei","vier","fünf"});

eins eins
eins zwei
zwei eins
eins drei
zwei zwei
drei eins
eins vier
zwei drei
drei zwei
vier eins
eins fünf
zwei vier
drei drei
vier zwei
fünf eins
 

Neue Themen


Zurück
Oben