Zahl im String hochzählen

YOES1805

Mitglied
Hallo. Ich studiere gerade informatik im 2. Semester und werden in einem Monat eine programmier prüfung ablegen. Bin gerade dabei mir die alt klausuren durchzugehen. Da bin ich auf eine aufgabe gestoßen wo ich echt nicht weiter komme.

Undzwar ist ein String gegeben das eine natürliche zahl enthält. Diese zahl soll durch eine methode erhoeheumzwei um zwei zahlen erhoeht und zurückgegeben werden. Als beispiel steht das der string mit 15 eine 17 ausgibt und bei 998 die zahl 1000. Das einzige problem ist. Ich darf keine anderen methoden benutzen auser die length und charat methode. Ich kriege es irgendwie nicht hin. Villeicht ist das für sehr viele von euch ein kinder spiel das zu machen aber ich glaube ehrlich das ich sehr schwer denke und es ist wirklich ein kinderspiel.

Ich wäre sehr dankbar für lösungs ansätze.
 

JCODA

Top Contributor
Mhh, wenn man kein parseInt benutzen darf, muss man es wohl von "Hand" machen. d.h. du schaust dir das letzte Zeichen an, addierst zwei dazu(nachdem du den char in ein Integer umgewandelt hast), falls es kein Übertrag gibt, d.h. die Zahl kleiner als 10 ist, bist du fertig, wenn du nur den letzten Buchstaben änderst, ansonsten gibt's ein Übertrag und du musst das Prozedere für die vorletzte Stelle wiederholen usw.
 

YOES1805

Mitglied
Ich darf ja keine anderen methoden benutzen. Ist das casten denn keine methode ? Ruft man dadurch keine methode auf? Wenn das nicht der fall ist ist die lösung auch leicht. Aber ich denke das das eine methode ist und ich sie nicht nutzen darf
 

Meniskusschaden

Top Contributor
Meines Erachtens ist ein typecast keine Methode. Aber du darfst ja ohnehin charAt() verwenden, so dass du ohne casts auskommen kannst, indem du einfach das Zeichen '0' abziehst. Folgendes ergibt beispielsweise 9: "987".charAt(0)-'0'
 

Flown

Administrator
Mitarbeiter
Kannst du eventuell schon mal einen textuellen Lösungsansatz liefern? Oder scheiterts auch schon an dem?
 

YOES1805

Mitglied
Ich habe gar keinen lösungsansatz und das mit dem 0 abziehen hab ich auch nicht wirklich verstanden. Ich habe versuch den string in einen char zu setzen und diesen hochzaehlen zu lassen. Hat auch mit 15 sodass ich 17 bekommen habe, aber bei der 998 geht das nicht und sicherlich auch nicht bei anderen zahlen wo es +2 mehr als eine stelle wird.
 

Flown

Administrator
Mitarbeiter
Naja beginnen wir mal: Stell dir dein Problem eher auf elektronischer Ebene vor. Was du brauchst ist ein Halbaddierer. D.h. du hast ein Signal (besser gesagt deinen einzelnen Stellen) und einen Übertrag (carry) der am Anfang eben 2 ist.

Da das least significant digit an letzter Stelle ist, musst du dein String auch von hinten nach vorne durchlaufen.
Java:
for(int i = s.length() - 1; i >= 0; i--) {...}

char sind Unicode zeichen (code points) und der char '0' ist eben nicht an der Stelle 0, sondern an Stelle 48. Glücklicherweise sind alle Ziffern von 0-9 aneinandergereiht und das heißt, wenn du s.charAt(i) - '0' aufrufst erhälst du die Ziffer an der i-ten Stelle.
Der Algorithmus lautet:
- Ziffer (als char) extrahieren, '0' abziehen und den Übertrag dazurechnen
- neuen Übertrag berechenen (Zahl / 10)
- Ziffer dem neuen String hinzufügen (sum = n % 10 + sum)

Wenn alle Stellen abgearbeitet sind, dann überprüfst du ob noch ein Übertrag vorhanden ist, wenn ja fügst du ihn nochmals deinem String hinzu:
Wenn carry != 0, dann: sum = carry + sum;

Zum Schluss die neue Zahl als String zurückliefern.

Hier hast du deinen Algorithmus. Bei Fragen, wie immer, her damit.
 
X

Xyz1

Gast
Wahrscheinlich sieht die Musterlösung irgendwie so aus: (das meiste wurde schon gesagt)
Java:
    public static void main(String[] args) {
        String s = "9909999999999999999999999999999999999999999999999999999999";
        int i = s.length() - 1;
        int x = s.charAt(i--) - '0' + 2;
        int u = (x / 10);
        String neu = "" + (x % 10);
        while (i >= 0) {
            x = s.charAt(i--) - '0' + u;
            neu = (x % 10) + neu;
            u = (x / 10);
        }
        neu = u + neu;
        System.out.println("neu = " + neu);
    }

Wobei das ja noch etwas durcheinander ist.
 

Thallius

Top Contributor
Also ich würde einfach zwei Methoden schreiben. Eine sie aus dem String ein Int macht und eine die aus dem Int dann wieder einen String macht. Und dazwischen mache ich dann ein Var++
 

Flown

Administrator
Mitarbeiter
Ich darf keine anderen methoden benutzen auser die length und charat methode
Also ich würde einfach zwei Methoden schreiben.
So siehts aus und es ist auch wirklich keine Hexerei. Da der @DerWissende schon mal wieder Code herausgelassen hat, kann man das auch - wie ich vorher gesagt habe mit einem Halbaddierer - schöner lösen.
Java:
public static String sum(String s, int number) {
  String sum = "";
  int carry = number;
  for (int i = s.length() - 1; i >= 0; i--) {
    int n = s.charAt(i) - '0' + carry;
    carry = n / 10;
    sum = n % 10 + sum;
  }
  if (carry != 0) {
    sum = carry + sum;
  }
  return sum;
}
 

YOES1805

Mitglied
Danke leute nach der ersten antworten von Flown mit dem halbaddierer hab ich mich dran gesetz und es hin bekommen :) und jetz sehe ich das ich auch noch code schnipsel von euch bekommen habe womit ich einen direkten vergleich machen kann. Danke :)
 
X

Xyz1

Gast
Yow, nur das Flown es in Pseudocode aufgeschrieben hat, der quasi gleichwertig zu meinem ist. Auch ist in der Aufgabenstellung nicht verlangt, eine beliebige Zahl zu addieren. Dein Ansatz geht also darüber hinaus - und ginge es nach mir, hätten wir dazu weder Pseudo- noch "Real"-Code aufgeschrieben. +++ Du hast die Kanone rausgeholt, ich hab sie gedreht, und du hast auf die Armen Spatzen geschossen...
 

mrBrown

Super-Moderator
Mitarbeiter
Yow, nur das Flown es in Pseudocode aufgeschrieben hat, der quasi gleichwertig zu meinem ist. Auch ist in der Aufgabenstellung nicht verlangt, eine beliebige Zahl zu addieren. Dein Ansatz geht also darüber hinaus - und ginge es nach mir, hätten wir dazu weder Pseudo- noch "Real"-Code aufgeschrieben. +++ Du hast die Kanone rausgeholt, ich hab sie gedreht, und du hast auf die Armen Spatzen geschossen...
Zwar etwas abseits vom Thema, aber das ist ja schon gelöst...wolltest du nicht statt Code nur noch .exe posten?
 

flopalko

Bekanntes Mitglied
Zwar etwas abseits vom Thema, aber das ist ja schon gelöst...wolltest du nicht statt Code nur noch .exe posten?
Nein das geht ja nicht, da er ja dann seinen echten Namen preisgeben würde, der dann in der Datei drinnen steht xD
Also bekommt man halt wenn es so trivial ist gnädigerweise seinen Code, wenn er aufwendigere Beispiele posten will haben wir halt alle Pech gehabt (nicht nur die die kein Windows benutzen^^), denn leider kann er die .exe ja auch nicht posten xD
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Long-Typ in String-Änderung führt zu keinem Ergebnis bei großer Zahl Java Basics - Anfänger-Themen 11
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
G Position einer unbekannten 3-stelligen-Zahl in einem String finden Java Basics - Anfänger-Themen 15
H Erste Schritte Nach einer Zahl n soll n Mal der String untereinander ausgegeben werden Java Basics - Anfänger-Themen 3
I String Kombination erstellen anhand fortlaufender Zahl (Vertragsnummer) Java Basics - Anfänger-Themen 13
H String und Zahl Java Basics - Anfänger-Themen 10
B Zahl in String abspeichern und später berechnen Java Basics - Anfänger-Themen 15
D String erste Zahl mit LKZ auslesen lassen Java Basics - Anfänger-Themen 36
E String bestehend aus Ziffern in Zahl verwandeln Java Basics - Anfänger-Themen 3
J Überprüfen ob String eine Zahl ist Java Basics - Anfänger-Themen 2
D Java doppelte Zahl/Zeichen in einem String entfernen Java Basics - Anfänger-Themen 6
W String Array in Int umwandeln um auf Zahl zu überprüfen Java Basics - Anfänger-Themen 4
S Funktion die mir fuer einen String eine Zahl zwischen 0.0 und 1.0 zurueckliefert..? Java Basics - Anfänger-Themen 9
T Ein String eine Zahl zuweisen Java Basics - Anfänger-Themen 15
R String Zahl um 1 dekrementieren Java Basics - Anfänger-Themen 12
D Zahl in einem String finden Java Basics - Anfänger-Themen 4
W Schlüsselworte Methode, die die grösste Zahl aus einem String ermittelt und zurückgibt Java Basics - Anfänger-Themen 8
N Maximale Zahl in einem String Java Basics - Anfänger-Themen 8
B Unbekannte Zahl aus einem String umwandeln Java Basics - Anfänger-Themen 15
K String und Zahl in Methode übergeben Java Basics - Anfänger-Themen 11
T String splitten beim wechsel vom buchstabe zu zahl! Java Basics - Anfänger-Themen 8
C String in Zahl und umgekehrt Java Basics - Anfänger-Themen 5
S Datentypen Zahl in String Java Basics - Anfänger-Themen 31
T Prüfen, ob ein String eine Zahl ist Java Basics - Anfänger-Themen 10
N an einem String ein zahl anhengen Java Basics - Anfänger-Themen 6
C Binärzahl vom Typ String in eine Zahl vom Typ Integer umwandeln Java Basics - Anfänger-Themen 4
G Frage:Welche Methodne kann man eine Zahl bzw. ein String Java Basics - Anfänger-Themen 3
G testen ob in String zahl Java Basics - Anfänger-Themen 10
P Zahl einfügen in String? Java Basics - Anfänger-Themen 9
N Zahl aus einem String finden und als Integer speichern Java Basics - Anfänger-Themen 3
M String: beginnt mit Buchstabe oder Zahl? Java Basics - Anfänger-Themen 18
G überprüfen ob string eine zahl enthält Java Basics - Anfänger-Themen 6
F Zahl aus String (Buchstaben und Zahl) extrahieren Java Basics - Anfänger-Themen 17
S Zahl von String Trennen Java Basics - Anfänger-Themen 4
H zufalls string und zahl erzeugen Java Basics - Anfänger-Themen 14
R in einem string nach einer zahl suchen und auslesen...... Java Basics - Anfänger-Themen 3
ixChronos Letzten 4 Ziffern einer großen Zahl ausgeben Java Basics - Anfänger-Themen 3
T Ich brauche eine Schleife die eine beliebige Zahl so lange durch 10 teilt bis zur Null Java Basics - Anfänger-Themen 5
Shadowrunner Variablen Gibt es eine Möglichkeit die Ziffern/Stellen einer Zahl fest zu legen? Java Basics - Anfänger-Themen 3
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
T Eingabe durch eine Zahl dividieren nachgucken? Java Basics - Anfänger-Themen 4
G Bei dynamischer Arrayliste nach jeder Auswahl Zahl entfernen Java Basics - Anfänger-Themen 3
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
A Methoden Guten Tag , ich wollte so machen dass wenn meine frog an eine fly/bee geht dann an meine Tafel geht der zahl +1 hoch. Java Basics - Anfänger-Themen 2
B Überprüfung dass Zahl nur aus 0,1 besteht Java Basics - Anfänger-Themen 2
S Vollkommene Zahl berechnen und ausgeben Java Basics - Anfänger-Themen 16
B Hashmap richtig bauen, die Tripel auf Zahl abbildet? Java Basics - Anfänger-Themen 10
S Größte Zahl nach Eingabe der Zahl 0 ausgeben Java Basics - Anfänger-Themen 6
B 49-bit-zahl mit genau 6 Einsen bauen? Java Basics - Anfänger-Themen 21
D Kleinste Zahl in Array finden die vorher noch errechnet werden müssen. Java Basics - Anfänger-Themen 4
M Java Ausgabe der höchsten Zahl Java Basics - Anfänger-Themen 14
Thomas06 Wie kann man mithilfe von boolean herausfinden ob eine zahl durch 5 und 7 teilbart ist ? Java Basics - Anfänger-Themen 7
M zahl raten Java Basics - Anfänger-Themen 1
sserio Prüfen, ob eine Zahl eine periodische Zahl ist Java Basics - Anfänger-Themen 20
I Zahl aufrunden (Zeit) Java Basics - Anfänger-Themen 43
M Eine Methode die erkennt ob die ein gegebene zahl größer oder kleiner sein muss Java Basics - Anfänger-Themen 2
D Gerade oder ungerade Zahl mittels Methoden Java Basics - Anfänger-Themen 13
TanTanIsTrying Durschnitt berechnen von eingegebener Zahl bis 1 heruntergezählt Java Basics - Anfänger-Themen 9
R Fortlaufende Zahl Java Basics - Anfänger-Themen 3
A Wenn eine Zahl durch 7 teilbar ist, soll statt der Zahl ein ‘*‘ angezeigt werden. java? Java Basics - Anfänger-Themen 47
K Warum gibt mir z. B. 40^128 eine Zahl? Ich dachte mit xor kann man nur booleanwerte erhalten, also prüfen ob etwas whar oder falsch ist? Java Basics - Anfänger-Themen 1
B Methoden Rekursiv festellen, ob eine Zahl gerade-oft vorkommt oder nicht Java Basics - Anfänger-Themen 4
W Wie ziehe ich von einer bestimmten Zahl, Zahlen ab, bis mein Ergebnis null beträgt? Java Basics - Anfänger-Themen 10
Q Prüfen ob Zahl als Summe von Potenzen dargestellt werden kann. Java Basics - Anfänger-Themen 20
HelpInneed Zahl. Java Basics - Anfänger-Themen 2
R Perfekte Zahl Java Basics - Anfänger-Themen 8
D Mittlerste Zahl Java Basics - Anfänger-Themen 17
D Grösste Zahl in einer Folge herausfinden. (ULAM) Java Basics - Anfänger-Themen 9
Poppigescorn Häufigkeit einer zahl zählen Java Basics - Anfänger-Themen 5
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
Poppigescorn scan.nextInt() wiederholen bis eine Zahl eingeben wird Java Basics - Anfänger-Themen 7
J Verdoppeln einer Zahl (in dem Fall Münzen) Java Basics - Anfänger-Themen 4
C Programm das feststellen kann, ob eine eingegebene Zahl einem Schaltjahr entspricht, richtig geschrieben? Java Basics - Anfänger-Themen 11
S Algorithmus (reelle Zahl <65536 von dezimal zu dual) max. 10 Nachkommastellen Java Basics - Anfänger-Themen 4
K Wie kontrolliere ich ob ich die Zahl in meinem Array schon hab? Java Basics - Anfänger-Themen 9
T Zahl in Array ersetzen Java Basics - Anfänger-Themen 2
Abraham42 Prozentsatz einer Zahl mehrmals Java Basics - Anfänger-Themen 2
C Größte Zahl aus einem Array ermitteln(als statische Methode) Java Basics - Anfänger-Themen 31
Kingamadeus2000 Anzahl der Ziffern der kürzesten Zahl aus einem zurückliefern Java Basics - Anfänger-Themen 1
V Beliebige Dreistellige Zahl Teiler finden Java Basics - Anfänger-Themen 4
newcomerJava Nach doppelter Zahl eine Ausgabe Java Basics - Anfänger-Themen 10
W Random Zahl unter Berücksichtung eines Durchschnitts Java Basics - Anfänger-Themen 7
S Zahl eingeben Java Basics - Anfänger-Themen 8
A Java . punkt neben einer Zahl. Java Basics - Anfänger-Themen 1
F Eine Zahl mit Arrays vergleichen Java Basics - Anfänger-Themen 7
J Die größte Zahl anzeigen Java Basics - Anfänger-Themen 19
V Array auf eine Zahl durchsuchen Java Basics - Anfänger-Themen 15
X Nach einem Bruch testen ob es eine ganze Zahl ist Java Basics - Anfänger-Themen 6
L Erhöhung der Zahl Java Basics - Anfänger-Themen 3
F Negative Zahl erzwingen Java Basics - Anfänger-Themen 3
N Eine Zahl solange teilen bis es nicht möglich ist und die Ergebnisse ausgeben Java Basics - Anfänger-Themen 23
T Eulersche Zahl e Java Basics - Anfänger-Themen 5
S Letzte Zahl eines Integer auslesen? Java Basics - Anfänger-Themen 3
G Programm schreiben: Zahl (n) eingeben, 1+1/n+2/n+3/n+....+n/n Java Basics - Anfänger-Themen 8
B Eine ganze Zahl zerlegen. Java Basics - Anfänger-Themen 4
J Fehler beim generieren von 4 Zufallszahlen Zahl doppelt ist eigentlich ausgeschlossen Java Basics - Anfänger-Themen 9
H Harshad-Zahl (Nivenzahl) und Palindrom überprüfen Java Basics - Anfänger-Themen 2
I Wie viele 1 an Bits hat die Zahl x? Java Basics - Anfänger-Themen 5
A Gewürfelte Zahl ausgeben Java Basics - Anfänger-Themen 10
M Rationale Zahl erkennen - Kurze Frage zum Restwert nach Division Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben