Reverse of a four digit number.

Status
Nicht offen für weitere Antworten.
K

kim988de

Gast
Hallo liebe Programmierer,

Schon hat die naechste Woche angefangen und es gibt schon wieder probleme mit den Homeworks.
Ich hoffe ihr koennt mir bei meiner Findung des Programms helfen.
Keine Komplettloesungen...weil ich moechte es versuchen diesmals zu schaffen....
haben aber noch keine Schleifen...


Das ist meine erste Hausaufgabe...
Write a program to input a 4-digit number from the keyboard, find the reverse
of that number and add the two. Print the original number, reverse of it and their
sum. Example: if the original number is 7493, then the reverse of it is 3947.

Ich musste von Jcreator auf netbeans umsteigen und ich fuehle mich noch ein bisschen lost... aber hoffe dass ich mich einwenig eingewoehne.

So mein erster weg zum Program war
1) Scanner importieren.
2) int x //die four digit number
3) irgendwie reversen
4) und dann addieren
5) und anzeigen lassen mit system.out.println(bla,bla,bla)

hier war schon mein erstes problem ich konnte die four digit number nicht reversen,deshalb
1) Scanner importieren
2) int z1,z2,z3,z4;
3) und dann reversen???

klappt irgendwie auch nicht....
dann habe ich vielleicht noch versucht.
statt int string zu benutzen, aber dann wieder den String in Integer zu convertieren. und das klappt leider auch nicht...Ich hoffe nuetzliche tips zu bekommen..thanks..
 
K

kim988de

Gast
Hallo...soweit bin ich...

package javaapplication7;
import java.util.Scanner;
/**
*
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {

System.out.println("Type the four digit number");
Scanner kbi= new Scanner(System.in);
String z1, z2, z3, z4;
String Sumstring;

z1=kbi.next();
z2=kbi.next();
z3=kbi.next();
z4=kbi.next();

Sumstring= ("z4+z3+z2+z1");
System.out.print(Sumstring);


}

}

Irgendwie schaffe ich nicht dass die Nummer reverst wird ... Es funktionert bis dahin dass ich nummer eintippe...aber mit den Sumstring klappt es nicht...Muesste es nicht eigentlich die Nummer reversen?
 
K

kim988de

Gast
Hallo habe alles bisschen vereinfacht...

package javaapplication7;
import java.util.Scanner;
/**
*
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {

System.out.println("Type the four digit number");
Scanner kbi= new Scanner(System.in);
String z1, z2, z3, z4;

z1=kbi.next();
z2=kbi.next();
z3=kbi.next();
z4=kbi.next();
System.out.println("The number is" +z1+z2+z3+z4);
System.out.println("The reversed number is" +z4+z3+z2+z1);

Es gibt mir aber immer noch nur die vier digit nummer an. und nicht die reversed number...
 

diggaa1984

Top Contributor
nen StringBuffer hätte eine "reverse" - Methode .. könntest also den String damit einlesen .. als int speichern .. den String umdrehen, als int speichern ... addieren und die auch wieder ausgeben .. wäre wohl die simpelste variante ohne selbst grossen kopfstand zu machen

was stringbuffer angeht findst bestimmt mit der suche oder in der sun-API genug infos
 
S

shad0w

Gast
Der Input lässt sich sehr abkürzen, indem du regular expressions (regex) benutzt:

Scanner sc = new Scanner(System.in);
String input = sc.next("\\d{4}"); //d steht für digit, und das exakt 4x
int i = Integer.parseInt(input);

Danach kannst du das mit StringBuilder reversen.
Dann bildest du die Summe...
 
S

shad0w

Gast
sorry, dann einfacherer:

Code:
Scanner sc = new Scanner(System.in);
String input = null;
while ((input = sc.next()).length() != 4) System.out.println("4 digits please!");
int i = Integer.parseInt(input);

bzw. noch einfacher:

Code:
Scanner sc = new Scanner(System.in);
String input = null;
do {
   input = sc.next();
} while (input.length() != 4);
int i = Integer.parseInt(input);

das nur soweit, damit der input korrekt ist
die berechnung kannst ja selbst machen
 
K

kim988de

Gast
Kann mir das jmd kommentieren?

hatte noch nicht do while schleifen..
was bedeutet den sc.next() und das darunter..
danke.
 
G

Guest

Gast
Code:
Scanner sc = new Scanner(System.in); // neues scanner objekt erstellen
String input = null;   // leere String Variable anlegen
do {                        // tu das zwischen den geschweiften Klammern solange
   input = sc.next();   // speichere die nächste Zeichenkette des Scanners in die input variable
} while (input.length() != 4);   // ... solange diese dieser Bedinung erfüllt ist
int i = Integer.parseInt(input); // wandle den String in einen Integer um
 
K

kim988de

Gast
Hallo,
habe gerade gegoogelt wie man die do while schleifen machen und habe die erste haelfte von den Loesung bekommen...

public class DoWhile{
public static void main(String[] args){
int n = 12345;
int t,r = 0;
System.out.println("The original number : " + n);
do{
t = n % 10;
r = r * 10 + t;
n = n / 10;
}while (n > 0);
System.out.println("The reverse number : " + r);
}
}
 
G

Gast

Gast
das ist genau der Teil, der ohne do-while einfach mit StringBuffer erledigt werden kann:
Code:
    String text = "Peter";
    String txet = new StringBuffer(text).reverse().toString();
    System.out.println(text + " und " + txet);
 

diggaa1984

Top Contributor
aber wir machen ja keine hausaufgaben, wir geben ja nur hinweise :D ... nachdenken, nachschauen, verstehen muss man schon selbst ... und intiative zeigen wohl auch
 

Landei

Top Contributor
Wenn du die Nummer schon hast, z.B. mittels Integer.parseInt(s), kannst du sie so umdrehen:
Code:
int nummer = ...
int n = nummer; //du brauchst die Original-Nummer später noch
int remmun = 0;
while(n != 0) {
  remmun = 10*remmun + n%10;
  n = n / 10;
}
 
G

Gast

Gast
ok ok.. stimmt. Ich hätte schreiben sollen: Wenn du schon googelst, google z.B. mal nach "StringBuffer example"
 

till123

Bekanntes Mitglied
Hier mal meine kleine (erweiterte) Lösung.
Recht schlicht und lange nicht optimal, aber sie läuft.

Code:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

class Test
   {
      public static void main(String[] arg) throws IOException
         {
    	  int anzahlZahlen;
    	  int tempEingegebenerWert;
    	  int tempInvertierterWert;
    	  String eingegebenerWert = new String();
    	  String invertierterWert = new String();
    	  String tempWert = new String();
    	  
    	  BufferedReader ir = new BufferedReader (new InputStreamReader(System.in));
    	  System.out.print("Wieviele Zahlen wollen eingeben?");  
    	  tempWert = ir.readLine();
     	 	try{
     	 		anzahlZahlen = Integer.valueOf(tempWert);
     	 		for(int i=1; i<=anzahlZahlen; i++)
     	 		{
     	 			System.out.print(i+".) Zahl:");
     	 			tempWert = ir.readLine();
     	 			eingegebenerWert = eingegebenerWert.concat(tempWert);
     	 			invertierterWert = tempWert.concat(invertierterWert);
    		    }
       	  
     	 		try{
     	 			tempEingegebenerWert = Integer.valueOf(eingegebenerWert);
     	 			tempInvertierterWert = Integer.valueOf(invertierterWert);
     	 			System.out.println("Eingegebene Zahl: "+eingegebenerWert);
     	 			System.out.println("Invertierte Zahl: "+invertierterWert);
     	 			System.out.println("Eingegebene Zahl + Invertierte Zahl:" + (tempEingegebenerWert+tempInvertierterWert) );
     	 			invertierterWert = invertierterWert+2;
     	 			System.out.println("Invertierte Zahl addiert mit Zwei: "+invertierterWert);
     	 			}
     	 		catch(NumberFormatException e)
     	 			{
     	 				System.out.println("Die Ergebnisse liegen nicht im int-Bereich!");
     	 			}
     	 		}
     	 	catch(NumberFormatException e)
     	 	{
    		 System.out.println("Es wurde keine gültige Anzahl eingegeben!");
    	 	}

         }
     }
 
G

Gast

Gast
"and add the two" bedeutet doch nicht, dass man eine 2 dazu addieren muss oder?
 
K

kim988de

Gast
Hallo,

ich glaube was ich brauche ist ein gutes Buch fuer Java anfaenger...koennt ihr mir was empfehlen, dass man auch sehr schnell bekommen koennte.

Danke fuer die ganzen Hilfen, aber irgendwie verstehe ich nur die Haelfte...bin die ganze zeit am googlen. aber irgendwie ist unser prof zu faul und gibt keine tipps...und die homeworks sind nicht was im Unterricht besprochen worde sondern was ganz anderes....
 
G

Gast

Gast
Ich lerne Java mit der Insel ("Java ist auch eine Insel"). Ist online kostenlos und ich kann mir nicht vorstellen mit einem echten Buch eine Programmiersprache lernen zu können.
 
K

kim988de

Gast
Hallo,
werde gleich wohl ein buch kaufen gehen....
ich hoffe bis dahin koennt ihr mir helfen...

public class DoWhile{
public static void main(String[] args){
int n = 12345;
int t,r = 0;
System.out.println("The original number : " + n);
do{
t = n % 10;
r = r * 10 + t;
n = n / 10;
}while (n > 0);
System.out.println("The reverse number : " + r);
}
}

warum ist t und r equals 0. Das wuerde doch heissen das r gleich 0 ist...und t gleich null oder verstehe ich da was falsch?
 
K

kim988de

Gast
Gast kannst du mir den link geben? hab es gegoogelt und irgendwie sehe ich nur den link dass es 49,90 Euro kostet...danke..
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben