Fragen zu einer Javaprogrammierübung

Status
Nicht offen für weitere Antworten.

RECKLESS

Neues Mitglied
Hallo, ich bin ein blutiger Anfänger im Bereich programmieren mit Java.
und hab ne übungsaufgabe bekommen die ich absolut nicht zu lösen weiß

(a) Erstellen Sie eine Klassenmethode, die zu einer übergebenen positiven oberen Schranke MAX alle
Zahlentripel (a, b, c), die die folgenden Eigenschaften erfüllen, zurückgibt:
3 3 2 a + b = c , mit 0 < a £ b, c < MAX natürliche Zahlen
Die ersten solchen Tripel sind z. B. (1, 2, 3); (2, 2, 4); (4, 8, 24); ...

würde mich über hilfe riesig freuen!

gruß RECKLESS
 

RECKLESS

Neues Mitglied
So sieht mein Ansatz aus. nun wollte ich ma hören was davon richtig ist und was man verbessern koennte



Java:
public class Tripel
{   
    // RuntimeException Texte
    private static final String RTE_FALSCHER_PARAMETER = "Falscher Uebergabeparameter: Typ ";
    private static final String RTE_ERWARTET = " erwartet.";
    private static final String RTE_FALSCHER_TYP = "Falscher Aufruf: das Element des Tripels hat den Typ ";
    
    public enum TripelElementTyp
    {
        LONG,
        DOUBLE;
    }
    
    // Instanzattribute
    long lA, lB, lC;
    double dA, dB, dC;
    TripelElementTyp typ1, typ2, typ3;
    
    /**
     * Standard-Konstruktor für Objekte der Klasse Tripel; zum Speichern von drei Double-Werten
     */
    public Tripel()
    {
        this.typ1 = TripelElementTyp.DOUBLE;
        this.typ2 = TripelElementTyp.DOUBLE;
        this.typ3 = TripelElementTyp.DOUBLE;
    }

    /**
     * Konstruktor für Objekte der Klasse Tripel; zum Speichern von drei Werten beliebigen Typs
     */
    public Tripel(TripelElementTyp typ1, TripelElementTyp typ2, TripelElementTyp typ3)
    {
        this.typ1 = typ1;
        this.typ2 = typ2;
        this.typ3 = typ3;
    }

    /**
     * Konstruktor für Objekte der Klasse Tripel; zum Speichern von drei Long Werten mit direkter Angabe der Werte
     */
    public Tripel(long a, long b, long c)
    {
        this.typ1 = TripelElementTyp.LONG;
        this.typ2 = TripelElementTyp.LONG;
        this.typ3 = TripelElementTyp.LONG;
        this.lA = a;
        this.lB = b;
        this.lC = c;
    }

    /**
     * Konstruktor für Objekte der Klasse Tripel; zum Speichern von drei Double Werten mit direkter Angabe der Werte
     */
    public Tripel(double a, double b, double c)
    {
        this.typ1 = TripelElementTyp.DOUBLE;
        this.typ2 = TripelElementTyp.DOUBLE;
        this.typ3 = TripelElementTyp.DOUBLE;
        this.dA = a;
        this.dB = b;
        this.dC = c;
    }

    /**
     * Setzt das erste Element des Tripels vom Typ Long
     */
    public void setErstesElement(long a)
    {
        if (this.typ1 != TripelElementTyp.LONG)
            throw new RuntimeException(new StringBuffer().append(RTE_FALSCHER_PARAMETER).append(this.typ1).append(RTE_ERWARTET).toString());
        this.lA = a;
    }
    
    /**
     * Setzt das erste Element des Tripels vom Typ Double
     */
    public void setErstesElement(double a)
    {
        if (this.typ1 != TripelElementTyp.DOUBLE)
            throw new RuntimeException(new StringBuffer().append(RTE_FALSCHER_PARAMETER).append(this.typ1).append(RTE_ERWARTET).toString());
        this.dA = a;
    }
    
    /**
     * Setzt das zweite Element des Tripels vom Typ Long
     */
    public void setZweitesElement(long b)
    {
        if (this.typ2 != TripelElementTyp.LONG)
            throw new RuntimeException(new StringBuffer().append(RTE_FALSCHER_PARAMETER).append(this.typ2).append(RTE_ERWARTET).toString());
        this.lB = b;
    }
    
    /**
     * Setzt das zweite Element des Tripels vom Typ Double
     */
    public void setZweitesElement(double b)
    {
        if (this.typ2 != TripelElementTyp.DOUBLE)
            throw new RuntimeException(new StringBuffer().append(RTE_FALSCHER_PARAMETER).append(this.typ2).append(RTE_ERWARTET).toString());
        this.dB = b;
    }
    
    /**
     * Setzt das dritte Element des Tripels vom Typ Long
     */
    public void setDrittesElement(long c)
    {
        if (this.typ3 != TripelElementTyp.LONG)
            throw new RuntimeException(new StringBuffer().append(RTE_FALSCHER_PARAMETER).append(this.typ3).append(RTE_ERWARTET).toString());
        this.lC = c;
    }
    
    /**
     * Setzt das dritte Element des Tripels vom Typ Double
     */
    public void setDrittesElement(double c)
    {
        if (this.typ3 != TripelElementTyp.DOUBLE)
            throw new RuntimeException(new StringBuffer().append(RTE_FALSCHER_PARAMETER).append(this.typ3).append(RTE_ERWARTET).toString());
        this.dC = c;
    }
    
    /**
     * Gibt das erste Element zurueck
     */
    public long getErstesElementLong()
    {
        if (this.typ1 != TripelElementTyp.LONG)
            throw new RuntimeException(new StringBuffer().append(RTE_FALSCHER_TYP).append(this.typ1).toString());
        return lA;
    }
    
    /**
     * Gibt das erste Element zurueck
     */
    public double getErstesElementDouble()
    {
        if (this.typ1 != TripelElementTyp.DOUBLE)
            throw new RuntimeException(new StringBuffer().append(RTE_FALSCHER_TYP).append(this.typ1).toString());
        return dA;
    }

    /**
     * Gibt das zweite Element zurueck
     */
    public long getZweitesElementLong()
    {
        if (this.typ2 != TripelElementTyp.LONG)
            throw new RuntimeException(new StringBuffer().append(RTE_FALSCHER_TYP).append(this.typ2).toString());
        return lB;
    }
    
    /**
     * Gibt das zweite Element zurueck
     */
    public double getZweitesElementDouble()
    {
        if (this.typ2 != TripelElementTyp.DOUBLE)
            throw new RuntimeException(new StringBuffer().append(RTE_FALSCHER_TYP).append(this.typ2).toString());
        return dB;
    }

    /**
     * Gibt das dritte Element zurueck
     */
    public long getDrittesElementLong()
    {
        if (this.typ3 != TripelElementTyp.LONG)
            throw new RuntimeException(new StringBuffer().append(RTE_FALSCHER_TYP).append(this.typ3).toString());
        return lC;
    }
    
    /**
     * Gibt das dritte Element zurueck
     */
    public double getDrittesElementDouble()
    {
        if (this.typ3 != TripelElementTyp.DOUBLE)
            throw new RuntimeException(new StringBuffer().append(RTE_FALSCHER_TYP).append(this.typ3).toString());
        return dC;
    }
}

Noctarius: Bitte Java-Tags nutzen!
 
Zuletzt bearbeitet von einem Moderator:

Marco13

Top Contributor
:eek: Wozu dieser Aufwand mit den unterschiedlichen Typen und Exceptions und so?

Und dass man Strings auch mit "x" + "y" verknüpfen kann, weißt du vermutlich...

Wenn es zur Aufgabenstellung an sich Fragen gibt, solltest du diese "Bedingungen" nochmal ... richtig und verständlich aufschreiben....
 

Noctarius

Top Contributor
Falls du schon auf Generics gestoßen bist, schau sie dir mal genauer an, falls du davon noch nichts gehört hast solltest du dir diese mal genauer anschauen ;-)
 

Andreas29

Bekanntes Mitglied
Hi,

wenn ich die Aufgabe so lese, hat das in meinen Augen wenig mit Generics zu tun. Der Datentyp sollte hier meiner Meinung nach einfach int sein und dann kann man beliebig und sehr bequem damit rechnen.
Ich denke, dass sich das über eine geschickte Schleife regeln lassen sollte. Was du brauchst, sind eigentlich zwei oder drei Variablen, von denen einen Rückwärts vom aktuellen max bis eins zählt und eine vorwärts von 1 bis aktuelles max. Damit könntest du dann Ausgabe wie:
(1 3 4)
(2 2 4)
(3 1 4)
usw. erzeugen und wärst, soweit ich die Aufgabe verstanden habe, fertig. Eventuell braucht man auch zwei Schleifen, eine, die von 2 bis max zählt und eine, die die beiden zu addierenden Werte hoch und runter zählt, das habe ich noch nicht bis zu ende durchdacht und kann es momentan leider auch nicht testen.
@Marco13:
Es ist richtig, dass man Strings mit + verknüpfen kann, ich habe aber mal gelernt, dass das für den Compiler aufwändiger sei als der StringBuilder / StringBuffer. Ist da noch was dran oder optimiert der Compiler das weg? Würde mich mal sehr interessieren. Würde mich da nur ungern auf irgendwelche Decompiler verlassen... Vielleicht wäre hier auch String.format() noch eine Idee.

Grüße,
Andy
 

Landei

Top Contributor
Es ist richtig, dass man Strings mit + verknüpfen kann, ich habe aber mal gelernt, dass das für den Compiler aufwändiger sei als der StringBuilder / StringBuffer. Ist da noch was dran oder optimiert der Compiler das weg? Würde mich mal sehr interessieren. Würde mich da nur ungern auf irgendwelche Decompiler verlassen... Vielleicht wäre hier auch String.format() noch eine Idee.

In einer Zeile wird das wegoptimiert, also "x" + 1 + "y" in new StringBuilder("x").append(1).append("y").toString() übersetzt.

Was man tunlichst vermeiden sollte, sind String-Additionen in Schleifen:
Java:
//schlecht
String s = "";
for(int i = 0; i < 100; i++) {
  s += i;
)

//gut
StringBuilder sb = new StringBuilder();
for(int i = 0; i < 100; i++) {
  sb.append(i);
)
String s = sb.toString();
 

Marco13

Top Contributor
Es ist richtig, dass man Strings mit + verknüpfen kann, ich habe aber mal gelernt, dass das für den Compiler aufwändiger sei als der StringBuilder / StringBuffer. Ist da noch was dran oder optimiert der Compiler das weg? Würde mich mal sehr interessieren. Würde mich da nur ungern auf irgendwelche Decompiler verlassen... Vielleicht wäre hier auch String.format() noch eine Idee.

Für den Compiler ist es vielleicht aufwändiger: DER muss das ja ins entsprechende StringBuilder-Konstrukt übersetzen :D Aber bei des Auführung des Programms gilt das, was Landei gesagt hat. Und selbst wenn es langsamer wäre: Bei so wenigen +en lohnt es sich wohl kaum, dafür den StringBuilder auszupacken, und speziell in diesem Fall ist es besonders egal: Wenn eine Exception fliegt, ist's mit Performance und Ausführungzeit sowieso dahin :D
 

Ein Keks

Bekanntes Mitglied
das is ja als würde man zum jagen ne atombombe benutzen....
so wie ich die aufgabe verstehe ist die relativ trivial (natürliche Zahlen -> int, long kein double)
ich würd die ungefähr so lösen:
Java:
public class TupelFactory {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		for (Tupel tupel : createTupelList(10)) {
			System.out.println(tupel);
		}
	}

	public static List<Tupel> createTupelList(int max) {
		List<Tupel> tupel = new ArrayList<Tupel>();
		for (int a = 1; a < max; a++) {
			for (int b = 1; b < max; b++) {
				for (int c = 1; c < max; c++) {
					if (a + b == c) {
						tupel.add(new Tupel(a, b, c));
					}
				}
			}
		}
		return tupel;
	}
}

class Tupel {

	private int a;
        private int b;
        private int c;

	public Tupel(int a, int b, int c) {
		this.a = a;
		this.b = b;
		this.c = c;
	}

	public int getA() {
		return a;
	}

	public void setA(int a) {
		this.a = a;
	}

	public int getB() {
		return b;
	}

	public void setB(int b) {
		this.b = b;
	}

	public int getC() {
		return c;
	}

	public void setC(int c) {
		this.c = c;
	}

	@Override
	public String toString() {
		return "{"+a+","+b+","+c+"}";
	}
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Best Practice Fragen zu Projektstruktur einer Datenbank-Abfrage-App (MVC) Java Basics - Anfänger-Themen 13
sserio Wie kann man nach einer Klasse fragen? Java Basics - Anfänger-Themen 12
J Fragen zu einer Methode Java Basics - Anfänger-Themen 3
D Anfänger-Fragen(Parameter einer Methode) Java Basics - Anfänger-Themen 7
Kenan89 Nach Namen einer Klasse fragen Java Basics - Anfänger-Themen 6
Zrebna Fragen zu einem Klassendiagramm Java Basics - Anfänger-Themen 8
H Fragen zu Wrapperklassen Java Basics - Anfänger-Themen 29
A Bei VierGewinnt fragen ob man gegen CPU oder Menschen spielen will. Java Basics - Anfänger-Themen 7
A Bei VierGewinnt vorher fragen, ob man gegen den Computer spielen möchte oder gegeneinander. Java Basics - Anfänger-Themen 1
A Bei VierGewinnt fragen, ob man gegen den Computer spielen möchte oder gegeneinander Java Basics - Anfänger-Themen 1
G Fragen zu Kompelierfehler in Aufgabe. Java Basics - Anfänger-Themen 25
E Bäume/ allgemeine Fragen Java Basics - Anfänger-Themen 21
O Falsche Antworten zu Fragen Java Basics - Anfänger-Themen 4
S Diverse Fragen vor Schulaufgabe ;) Java Basics - Anfänger-Themen 4
S Fragen zu Ausgabe double und float Java Basics - Anfänger-Themen 3
B fragen zu Aufbau eines UML-Klassendiagramm Java Basics - Anfänger-Themen 1
C 3 Fragen rund um Klassenattribute Java Basics - Anfänger-Themen 8
L Erste Schritte Log4J Fragen Java Basics - Anfänger-Themen 5
NeoLexx Fragen zu diversen Elementen der Javabibliothek Java Basics - Anfänger-Themen 5
D Budget Manager fragen zur Umsetzung Java Basics - Anfänger-Themen 9
N Fragen zur Datenspeicherung Java Basics - Anfänger-Themen 45
T Java Anfänger mit konkreten Fragen Java Basics - Anfänger-Themen 2
CT9288 Fragen zu Java Java Basics - Anfänger-Themen 16
W Fragen zu Generics Java Basics - Anfänger-Themen 14
T ObjectInput/OutputStream Fragen zur Funktionsweise Java Basics - Anfänger-Themen 3
J Fragen zum Code aus dem Buch "Schrödinger programmiert Java 2.te Ausgabe" Java Basics - Anfänger-Themen 6
Z Fragen zu Exception (Throws/throw) Java Basics - Anfänger-Themen 7
J Fragen zu Input/Output Java Basics - Anfänger-Themen 3
J Erste Schritte Oracle Tutorials zu Java 8 - Fragen dazu Java Basics - Anfänger-Themen 1
H Java Quereinsteiger Roadmap und Fragen Java Basics - Anfänger-Themen 29
H fragen Java Basics - Anfänger-Themen 15
M Samelsarium Grundlegender Fragen 2 Java Basics - Anfänger-Themen 9
M Sammelsarium an Grundlagen Grundlagen Fragen Java Basics - Anfänger-Themen 11
B Java ist / wird kostenpflichtig. Ein paar Fragen Java Basics - Anfänger-Themen 1
J Fragen zu synrchonized und kritischen Abschnitten Java Basics - Anfänger-Themen 5
S Fragen zu einem Rechentrainer Java Basics - Anfänger-Themen 2
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
J Wo kann man Fragen zu ireport stellen. Java Basics - Anfänger-Themen 0
M Fragen zum Anlegen und Benutzen von Listen Java Basics - Anfänger-Themen 9
G Ein paar Anfänger Fragen zu StdDraw Java Basics - Anfänger-Themen 4
D Fragen zur Klassen Java Basics - Anfänger-Themen 4
Aprendiendo Zwei Fragen und ein geerbtes "protected"-Attribut Java Basics - Anfänger-Themen 2
J Interface Fragen bezüglich "Sauberkeit" von Code Java Basics - Anfänger-Themen 5
D Objekte-Fragen Java Basics - Anfänger-Themen 1
V Erste Schritte Habe Fragen zu der For und While Schleife als auch Inkrement und Dekrement Java Basics - Anfänger-Themen 4
K Zwei Fragen zu Graphics/Graphics2D Java Basics - Anfänger-Themen 5
R Fragen über den Konstruktor Java Basics - Anfänger-Themen 0
Azazel Ein paar Fragen zu Methodenaufrufen(java.awt) Java Basics - Anfänger-Themen 2
S Erste Schritte Fragen zur For-Schleife Java Basics - Anfänger-Themen 9
C Interface Fragen zum Interface Java Basics - Anfänger-Themen 7
GreenTeaYT Exception und zur OOP fragen? Java Basics - Anfänger-Themen 3
C Fragen zum Spigot Plugin (1.8) Java Basics - Anfänger-Themen 6
J Fragen zu Exceptions Java Basics - Anfänger-Themen 24
N Quiz- Fragen zufällig anzeigen lassen Java Basics - Anfänger-Themen 7
J Verschieden Fragen über Java Programmierung Java Basics - Anfänger-Themen 3
L Viele Fragen zu den Grundlagen Java Basics - Anfänger-Themen 5
B Fragen zu ZIP-File Java Basics - Anfänger-Themen 9
L fragen zu arrays Java Basics - Anfänger-Themen 8
L Fragen zu selbstgeschriebenem Programm Java Basics - Anfänger-Themen 5
M Fragen zum Auslesen von HTML Seiten Java Basics - Anfänger-Themen 5
J Threading-Aufgabe. Totale Noob Fragen, aber bitte trotzdem beantworten ;) Java Basics - Anfänger-Themen 7
S Java Fragen Konstruktor & Statische Methoden Java Basics - Anfänger-Themen 4
K Erste Schritte Frage Antwort Spiel - Fragen zur Planung Java Basics - Anfänger-Themen 2
C Java Applet Fragen: Serialisierung, Excel import Java Basics - Anfänger-Themen 2
Anfänger2011 2 kleine Fragen zu ArrayListen Java Basics - Anfänger-Themen 5
S Fragen zu Ausdrücken&Bedingungen Java Basics - Anfänger-Themen 5
A 2 kurze Anfänger fragen Java Basics - Anfänger-Themen 6
H grundlegende Fragen Java Basics - Anfänger-Themen 3
V Interface ich schäme mich das zu fragen, aber ich schaff nicht ein Text zu zentrieren :( [javaFX] Java Basics - Anfänger-Themen 6
N Programm: Fragen beantworten Java Basics - Anfänger-Themen 6
C Anfänger Anfänger Fragen Java Basics - Anfänger-Themen 8
Z Compiler-Fehler LinkedList Fragen Java Basics - Anfänger-Themen 4
D Rekursion Allgemeine Fragen Java Basics - Anfänger-Themen 2
D [Fragen] zu Methoden Java Basics - Anfänger-Themen 2
S Fragen zur Implementierung eines Binärbaums Java Basics - Anfänger-Themen 3
T Ein paar Fragen zu OOP und Java. Java Basics - Anfänger-Themen 16
J Allgemeine Fragen zur GUI Java Basics - Anfänger-Themen 1
johnnydoe Erste Schritte Erster Blick - erste Fragen Java Basics - Anfänger-Themen 11
DStrohma Grundsätzliche Fragen zu Drag & Drop Java Basics - Anfänger-Themen 1
N Klassen fragen zur getter und setter methode Java Basics - Anfänger-Themen 11
S 3 Fragen, Verzeichnis, GridLayout psoitionieren, Werte für JSpinner Java Basics - Anfänger-Themen 2
T Fragen zu Set / Relationen verknüpfen Java Basics - Anfänger-Themen 4
S 2 Fragen Java Basics - Anfänger-Themen 4
S Hallo und Fragen zu Arbeitsverzeichnis und Menü Java Basics - Anfänger-Themen 8
N Java Fragen... Java Basics - Anfänger-Themen 10
F ExecutorService Fragen! Java Basics - Anfänger-Themen 2
O HashMap Fragen Java Basics - Anfänger-Themen 8
C Fragen zu Arrays Java Basics - Anfänger-Themen 19
T viele "kleine" Fragen... Java Basics - Anfänger-Themen 3
S Fragen zur Implementierung eines Adressbuches Java Basics - Anfänger-Themen 20
S Fragen zu Arrays Java Basics - Anfänger-Themen 6
K Diverse Fragen zum Fehlerlogging Java Basics - Anfänger-Themen 9
N StringReader - Fragen Java Basics - Anfänger-Themen 8
C Einige Fragen zu Frames Java Basics - Anfänger-Themen 7
M Erste Schritte Allgemeine Fragen Java Basics - Anfänger-Themen 4
PaulG Fragen zu Binärbaum Java Basics - Anfänger-Themen 21
P Methoden Aquarium (Fragen zum Scanner) Java Basics - Anfänger-Themen 5
T Erste Schritte Fragen zu meinen kleinen Programm Java Basics - Anfänger-Themen 9
D 2 Fragen: Position ändern vs. LayoutManager / Bilder einfügen im Vordergrund Java Basics - Anfänger-Themen 3
O Zwei Fragen zu Methoden Aufrufen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben