Java Aufgabe

FlyP

Mitglied
Hallo zusammen

Ich bin ein absoluter Java-Anfänger und muss nun folgende Aufgabe lösen:


Die Klasse StringInteger stellt eine rudimentäre Implementierung eines Datentyps für beliebig
grosse nicht-negative ganze Zahlen dar. Ergänzen Sie die Klasse um eine Methode für die Addition.
Tipp: Schriftliches Addieren zweier Zahlen, von rechts beginnend. Erstellen Sie weitere Testfälle.

Java:
public class StringInteger {
   private String internal;

   public StringInteger( int n ) {
     if( n<0 )
       throw new IllegalArgumentException("Negative Zahlen sind nicht erlaubt.");
     this.internal = String.valueOf( n );
   }
   
   public StringInteger( String s ) {
     if( s==null || s.length()==0 || ( s.charAt(0)=='0' && s.length()>1 ))
       throw new NumberFormatException("Unzulässiges Format: " + s);
     for(int i=0; i<s.length(); i++) { //nur Ziffern?
       char c = s.charAt(i);
       if( c<'0' || c>'9' )
         throw new NumberFormatException("Unzulässiges Format: " + s);
     }
     this.internal = s;
   }
   
   public String toString(){
     return internal;
   }
   
   public StringInteger add( StringInteger that ){
     //t.b.i.
   }
}

Kann mir jemand weiterhelfen?

Besten Dank im Voraus

Freundliche Grüsse
FlyP
 
Zuletzt bearbeitet von einem Moderator:
X

Xyz1

Gast
Mhm ja, gleiche Länge wäre hilfreich, muss aber nicht unbedingt.
Java:
        String s1 = "999", s2 = "98765", s3 = "";
        int i = s1.length() - 1, j = s2.length() - 1, z = 0;
        while (i >= 0 || j >= 0 || z > 0) {
            int x = 0, y = 0;
            if (i >= 0) {
                x = s1.charAt(i) - '0';
            }
            if (j >= 0) {
                y = s2.charAt(j) - '0';
            }
            s3 = (x + y + z) % 10 + s3;
            z  = (x + y + z) / 10;
            i--;j--;
        }
        System.out.println("s3 = " + s3);

Bin mir nicht so sicher, ob es nicht vereinfacht werden kann. Getestet ist es auch noch nicht. So ähnlich macht das auch der Prozessor.
 
X

Xyz1

Gast
Also beim Addieren nimmt man ja Ziffer für Ziffer, Stelle Stelle.
while (i >= 0 || j >= 0 || z > 0) {
DAS gefällt mir natürlich noch nicht, aber wenigsten kurzschließend, wenn auch kompliziert.

Jetzt hast du this.internal und that.internal, mit denen du den Spaß machen kannst. Anschließend noch schnell das neue StringInteger zurückgeben.
 
X

Xyz1

Gast
Kein Problem. Aber du musst es ja auch verstehen und in die bestehende Methode in deiner Klassen einbauen können.

Was hab ich? Was brauch ich? Was muss ich tun? Was kann weg?

Poste doch noch mal (alles) innerhalb von [code=Java]....[/code]-Tags! Jetzt hab ich "Blut" geleckt. :D

Edit: Und nimm den Nicht-reichen-Texteditor.
 

FlyP

Mitglied
Es handelt sich hierbei lediglich um einen Teilaufgabe an der ich angestanden bin, dass ganze stütz sich auf folgende Aufgaben:

04.05 Zeigen Sie, dass die folgenden (int) Operationen in Java nicht überlaufsicher sind, indem Sie
nachweisen, dass für bestimmte Werte das Ergebnis nicht mit dem mathematisch korrekten Wert
übereinstimmt:

z = x + y;
z = x * y;
z = x - y;
z = x / y;
z = -x;

Tipp: Verwenden Sie die Konstanten Integer.MAX_VALUE bzw. Integer.MIN_VALUE. Beachten Sie, dass
der Wertbereich des int-Datentyps nicht symmetrisch um den Wert 0 liegt.
Anmerkung: Bei der Division, etwa 7/3 = 2 entsteht keine Überlaufsituation. Das Ergebnis ist

aufgrund der Definition von „ganzzahliger Division“ mathematisch korrekt.

04.06: Aus Übung 04.05 ist bekannt, dass in Java Überlaufsituationen unbemerkt auftreten können.
Erstellen Sie statische Methoden für die problematischen Operationen, die im Überlaufsfall – und nur
dann – eine ArithmeticException auslösen und im Normalfall das gewünschte Ergebnis liefern.

Java:
public static int add( int x, int y ) {
   if( ... )
     throw new IllegalArgumentException("Überlauf: " + x + " + " + y + " nicht korrekt.");
   //Normalfall
   return x + y;
}
//analog: subtract( int, int), mult( int, int), divide(int, int), negate( int )

Tipp: Es ist zwar verlockend, einen möglichen Überlauf in der Form
if( x + y > Integer.MAX_VALUE )
zu überprüfen, aber nicht korrekt. Verwenden Sie einen mathematisch gleichwertigen Ausdruck, der
keinen Überlauf generiert.
 
Zuletzt bearbeitet von einem Moderator:

FlyP

Mitglied
Hier noch die Lösung zu 4.05 als Nachtrag:

Java:
public static void main(String[] args) {
   int x = Integer.MAX_VALUE;
   int y = 10;
   int z;

   System.out.println("x = " + x + " (Integer.MAX_VALUE)");
   System.out.println("y = " + y);

   System.out.println();
   System.out.println("***** Addition *****");
   z = x + y;
   System.out.println("x + y = " + z + " | korrekt: +2147483649");
   System.out.println();
   System.out.println("***** Multiplikation *****");
   z = x * y;
   System.out.println("x * y = " + z + " | korrekt: 4294967294");
   System.out.println();
   System.out.println("***** Division *****");
   z = x / 3;
   System.out.println("x / 3 = " + z + " | korrekt: 715827882.33... > Division mit int gibt Ganzzahl");

   System.out.println();
   System.out.println("***** Subtraktion *****");   
   x = Integer.MIN_VALUE;
   y = 2;
   System.out.println("x = " + x + " (Integer.MIN_VALUE)");
   System.out.println("y = " + y );

   z = x - y;
   System.out.println("x - y = " + z + " | korrekt: -2147483650");
   System.out.println();

   System.out.println("***** Negation *****");
   x = Integer.MAX_VALUE;
   z = -x;
   System.out.println("Wenn x = Integer.MAX_VALUE (" + x + ")");
   System.out.println("-x = " + z + " | korrekt!");

   x = Integer.MIN_VALUE;
   y = 2;
   System.out.println("Wenn x = Integer.MIN_VALUE (" + x + ")");
   z = -x;
   System.out.println("-x = " + z + " | korrekt: +2147483648");
   System.out.println();

   System.out.println();
}
 
Zuletzt bearbeitet von einem Moderator:
X

Xyz1

Gast
Selbstverständlich ist int nicht überlaufsicher. int hat lediglich 32 Bit s. Aber genau definiert/spezifiziert.

Es kann selbstverständlich getestet werden, ob ein Überlauf stattfand. Aber das ist ein bisschen schlecht.

Du hast oben 'nen immutable "int"-Wrapper, für natürliche Zahlen >= 0.

Da findet kein Überlauf statt, lediglich die Performance leidet etwas.

Wie es auch sei, der Algo ist korrekt. Ich bin Experte für Algos, muss das also können. :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
M Java Programmierung Aufgabe Anfänger Java Basics - Anfänger-Themen 1
Mikejr Java Berg aufgabe Java Basics - Anfänger-Themen 6
Robert_Klaus Hamster java Simulation Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
TimoN11 Java spezielle Suchprobleme - Aufgabe Java Basics - Anfänger-Themen 5
justemii Gehalt berechnen - Aufgabe Java-Programm Java Basics - Anfänger-Themen 9
M Lösung Aufgabe - Java Programmiren lernen für Dummies Java Basics - Anfänger-Themen 11
A Java-Programmierungs Aufgabe Java Basics - Anfänger-Themen 2
S Unbedingte hilfe bei Java Aufgabe [Schleife / Zinsrechnung] Java Basics - Anfänger-Themen 14
J Hilfe bei Java Aufgabe (Restschuld berechnen) Java Basics - Anfänger-Themen 11
S Hilfe bei Java Aufgabe (Schleifen) Java Basics - Anfänger-Themen 25
J Java Starthilfe Verständnisfrage Aufgabe Java Basics - Anfänger-Themen 2
H java aufgabe Java Basics - Anfänger-Themen 7
H java aufgabe Java Basics - Anfänger-Themen 68
H java aufgabe Java Basics - Anfänger-Themen 25
H aufgabe java luhn algorithmus Java Basics - Anfänger-Themen 10
R Java Aufgabe (Teilbarkeit) Java Basics - Anfänger-Themen 7
H java aufgabe Java Basics - Anfänger-Themen 44
H java aufgabe Java Basics - Anfänger-Themen 7
H java string aufgabe Java Basics - Anfänger-Themen 10
H java online aufgabe Java Basics - Anfänger-Themen 4
H JAVA AUFGABE Java Basics - Anfänger-Themen 7
P Problem bei Java-Aufgabe Java Basics - Anfänger-Themen 12
J Bradley Kjell java Aufgabe Java Basics - Anfänger-Themen 3
N Java Aufgabe Java Basics - Anfänger-Themen 3
V Verstehe die Lösung einer Aufgabe von Grunkurs-Java nicht. Java Basics - Anfänger-Themen 11
P Verstehe Lösung einer Aufgabe von "Grundkurs-Java" nicht Java Basics - Anfänger-Themen 5
S Hinweis zu Fehler im Kalender-Code - Aufgabe 5.3 aus Grundkurs Programmieren in Java 7. Auflage Java Basics - Anfänger-Themen 4
B Kreuzprodukt zweier Vektoren (Erste Java Aufgabe - Hilfestellungen und Tips erwünscht) Java Basics - Anfänger-Themen 4
M Java Aufgabe Java Basics - Anfänger-Themen 30
M Kurze Verständnisfrage zu einer Java Aufgabe Java Basics - Anfänger-Themen 12
M Problem bei einer Java-Aufgabe (Fakultäten) Java Basics - Anfänger-Themen 5
M Hilfe bei Java-Aufgabe Java Basics - Anfänger-Themen 15
eXistenZ Java-Boon kommt nicht zurrecht mit der Umsetzung einer Aufgabe... Java Basics - Anfänger-Themen 7
D Problem bei Java - Aufgabe Java Basics - Anfänger-Themen 7
J Java Aufgabe -> String einlesen, splitten,Substring & Java Basics - Anfänger-Themen 3
J kleine java aufgabe: ausgabe von sternchen Java Basics - Anfänger-Themen 20
G Java Aufgabe nicht lösbar Java Basics - Anfänger-Themen 5
J Java-Arraylist Aufgabe Java Basics - Anfänger-Themen 3
M Java-Anfänger Aufgabe Java Basics - Anfänger-Themen 3
G Problem mit Java Aufgabe Java Basics - Anfänger-Themen 14
D Java Aufgabe fürs Studium (bitte um Hilfe) Java Basics - Anfänger-Themen 8
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2
G Help me in the Java Program Java Basics - Anfänger-Themen 2
L Java- Vererbung Java Basics - Anfänger-Themen 4
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
_so_far_away_ Ich möchte Java lernen Java Basics - Anfänger-Themen 11
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
MoxMorris this Keyword in Java Java Basics - Anfänger-Themen 14
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
wolei JAVA Zeitdifferenz feststellen. Java Basics - Anfänger-Themen 4
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17

Ähnliche Java Themen

Neue Themen


Oben