Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

JAVA (QUERSUMME BERECHNEN)

Guten Tag weiss jemand wie ich die Quersummer einer zahl errechne...

Beispiel... von 59 ist die Quersumme 5+9 = 14 ;
Dabei soll die Variable in eine Zahl eingegeben werden !


Antworten zu JAVA (QUERSUMME BERECHNEN):

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
4 Leser haben sich bedankt

mir ist ja klar was das ist aber wie programmiere ich das in java ?

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
2 Leser haben sich bedankt
Soweit ich dort gesehen habe, ist auch ein java-Beispiel drin. Such auf der Seite nach Java. Hilft das weiter?

mhh ja das beispiel ist das bisschen komisch geschildert ... ich versuch mich dann ma damit..... wenn es nicht klappt melde ich mich wieder !!!!!!!!

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
2 Leser haben sich bedankt
Und dann postest du einfach deinen bisherigen Stand

ne leider hilft mir das auch nicht ... weiss denn niemand hier ein alghoritmus zu berechneung einer EINFACHEN QUERSUMME ?

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
1 Leser hat sich bedankt

Hast du dir denn schonmal ernsthaft Gedanken dazu gemacht? Wie würdest du denn rangehen an die Sache?

Ich hab selber auch keinen passenden Algorithmus auf Lager. Aber die Problemstellung ist simpel. Da muss sich doch etwas zusammenreimen lassen. ;)

Also, wie sieht's aus? Irgendwelche Ideen?

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
6 Leser haben sich bedankt

Für den Fall, dass du dich mit Java nicht so auskennst:

Wenn du ne int-Zahl durch 10 teilst, dann bekommst du wieder ne int-Zahl (Nachkommastellen werden einfach abgeschnitten)

Wenn du ne Ganzzahl MODULO rechnest, dann bekommst du den Rest, wenn du durch 10 teilen würdest. In Java schreibt man für Modulo ein Prozentzeichen...

Beispiel
int i=123;
System.out.println(i / 10);
System.out.println(i % 10);

Ausgabe:
12
3

Denn 123/10 = 12 Rest 3

Pack das in ne Schleife, denk selber bisl drüber nach...

« Letzte Änderung: 12.11.06, 11:32:39 von mati »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
4 Leser haben sich bedankt

Schöner Ansatz, daran hatte ich noch gar nicht gedacht :)

Und es zeigt auch mal wieder, dass viele Wege nach Rom führen. Für den Fall, dass die Zahl eingegeben werden soll, würde sich noch eine andere Lösung anbieten:

Nach der Eingabe liegt die Zahl als String vor. Diesen String könnte man "Ziffer für Ziffer" (also eigentlich: Zeichen für Zeichen) zerhacken, dann auf int casten und den ganzen Schotter aufsummieren.

Jetzt brauchst du nur mal abchecken, welche Lösung für dich besser geeignet wäre - oder eine weitere erfinden ;)  ...ja, und dann das Ganze in ein Stück Code pressen.

greez 8)
JoSsiF

aber das problem bei diesne algorithmus ist doch irgendwie das ich die letze zahl dann weglasse ? oder ? z.b: 123 = 3 eigentlich müsste es ja 6 sein ?

kann mir mal jemand helfen ich komme irgendwie nicht klar....komme in eine endlos schleife mit falschen ergebnis...

   
   int quersumme,QuersummeDurchZehn, QuersummeModulu;
   
   Scanner sc= new Scanner (System.in);
   
   
   System.out.print("Quersumme: ");
   quersumme = sc.nextInt();

   
   
   while(quersumme>10)
   {
      QuersummeDurchZehn = quersumme/10;
      QuersummeModulu    = quersumme%10;
      
   System.out.println("Durch 10: "+QuersummeDurchZehn);
   System.out.println("Modulu  : "+QuersummeModulu);
   if(quersumme<10)break;
   }
   }
}

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
12 Leser haben sich bedankt

du musst die einzelnen modulos natürlich addieren... das mit der ausgabe oben war nur um dir zu verdeutlichen was da raus käme...



int zahl = 123;


int quersumme = 0;

while (zahl > 0) {
  quersumme += zahl%10;
  zahl=zahl/10;
}

System.out.println("Quersumme: "+quersumme);

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
4 Leser haben sich bedankt
du musst die einzelnen modulos natürlich addieren... das mit der ausgabe oben war nur um dir zu verdeutlichen was da raus käme...



int zahl = 123;


int quersumme = 0;

while (zahl > 0) {
  quersumme += zahl%10;
  zahl=zahl/10;
}

System.out.println("Quersumme: "+quersumme);

Och menno, das ging jetzt aber zu schnell mit der Lösung des Rätsels ;D

Ich stehe vor der selben Aufgabe, und die Lösung ist sehr gut, aber ich wollte fragen:
Was muss ich machen damit ich Fehler bei der Eingabe gehandeln kann? Wahrscheinlich catch/try, aber wie genau würde das dann ausschauen.
 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi |

Nö, ein Try-Catch-Block passt da eher weniger. Das nimmste, wenn eine Methode eine Exception werfen könnte.

Es handelt sich bei deinem Vorhaben um eine simple Validierung. Du könntest dir eine Funktion bauen, die die Eingabe auf Gültigkeit prüft und dann true oder false ausgibt. Entsprechend müsstest du reagieren, z.B. eine Fehlermeldung ausgeben und den Nutzer zur erneuten Eingabe auffordern.

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
1 Leser hat sich bedankt

@gumpi: try/catch ist imo gar nicht so verkehrt um zumindest auf ne ganze Zahl zu prüfen...

Schau dir mal die Methode Integer.parseInt(String s) an.

Falls das gut geht, kannst du danach ja noch weitere Prüfungen durchführen (z.B. >=0 oder so).

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
try/catch ist imo gar nicht so verkehrt um zumindest auf ne ganze Zahl zu prüfen...

Schau dir mal die Methode Integer.parseInt(String s) an.

*zustimm*

Daran hatte ich gar nicht gedacht. Wenn das als Validierung reicht, bietet es sich natürlich an :)

greez 8)
JoSsiF

Hi, habs mir grad durchgelesen.
Also meiner Meinung nach müsste das mit folgendem Code perfekt gehen:

try {
int src = new Scanner(System.in).nextInt();
}catch(NumberFormatException e) {
System.out.printl("DU TROTTEL, QUERSUMME EINER ZAHL!!");
return;
}
String s = "" + src;
int[] numbers = new int[s.length()];
for(int i = 0; i < s.length(); i++) {
numbers = Integer.parseInt(s.charAt(i));
}
int erg = 0;
for(int i : numbers) {
erg+=i;
}
System.out.println("Die Quersumme ist: " + erg);


mfg.

P.S. der Code ist NICHT getestet, bin bei meiner Oma, und hab kein Java installiert, der is so aus m Kopf rausgeschrieben. Also bei Groß/Klein schreibung werden sicher Fehler sein, ausserdem bin ich nicht ganz sicher ob man Primitive Datentypen in einer For-Each schleife verwenden darf (glaub schon, wenn net schreibt halt "Integer" hin).

Also ich bin wieder zhaus, und hab den Code nochmal überdacht und in Eclipse ausprogrammiert, im Endeffekt bin ich zu 2 Lösungen gekommen:
1. Die Ausfuehrliche Variante:
      System.out.print("Bitte gib eine Integer Zahl ein, von der du die Quersumme moechtest: ");
      int zahl = 0;
      try {// falls ein Text eingegeben wird oder eine zu grosze/kleine Zahl
         zahl = new Scanner(System.in).nextInt();
      } catch(NumberFormatException e) {
         System.out.println("Bitte gib eine Integer-Zahl ein (" + Integer.MIN_VALUE + " - " + Integer.MAX_VALUE + ")");
         return;
      }
      String nums = "" + zahl; //die Zahl als Text um jedes Zeichen heraus zu loesen
      int erg = Integer.parseInt("" + nums.charAt(0)); // ergebniss
      
      System.out.println(); //neue zeile
      System.out.print(erg);
      for (int i = 1; i < nums.length(); i++) {
         System.out.print(" + " + nums.charAt(i));
         erg+= Integer.parseInt("" + nums.charAt(i));
      }
      System.out.print(" = " + erg);

und 2. die Leichterere Variande die etwas besser verstanden werden kann:

      System.out.println("Bitte eine Zahl eingeben: ");
      int zahl = 0; //die Zahl um die es sich dreht
      try {// falls ein Text eingegeben wird oder eine zu grosze/kleine Zahl
         zahl = new Scanner(System.in).nextInt();
      } catch(NumberFormatException e) {
         System.out.println("Bitte eine Integer-Zahle eingeben, sonst nichts");
         return;
      }
      String ziffern = "" + zahl; //Die selbe Zahl als String, um jedes Zeichen heraus zu loesen.
      int zif[] = new int[ziffern.length()]; //array, um jede Ziffer einzeln zu speichern
      for (int i = 0; i < zif.length; i++) //for-schleife die ueber die Ziffern drueber geht
         zif = Integer.parseInt("" + ziffern.charAt(i));//Integer.parseInt, wandelt einen String in eine Zahl um
      int sum = 0; //das End ergebniss
      for (int i = 0; i < zif.length; i++)
         sum += zif; //die Ziffern zusammenzaehlen, selbes wie "sum = sum + zif";
      System.out.println("Quersumme = " + sum);   

Also der Code ist getestet. Wobei ich irgendwie glaube, des braucht sowieso jetzt keiner mehr^^.

mfg.
 

hey was hälst du davon??  ;)

public class Quersumme
{
        int PositionH;
        int zahl;
        int Quersumme;
       
        public Quersumme (int Zahl) {
            zahl = Zahl; }
       
        int berechneQuersumme() {
            while (zahl>0) {

            Quersumme = Quersumme + zahl % 10;
            zahl = zahl / 10;
        }
                return Quersumme;
            }
                   

}
 

Also ich hab das ganze so gelöst ;)
Allerdings endet mein Programm erst bei 0.

import java.util.*;

public class Quersummen {
   public static void main(String[]args){
      Scanner eingabe= new Scanner (System.in);
      long qs; //Quersumme
      long r;
      long zahl2; //neue Zahl nach teilen durch 10
      long zahl;
      do{
         do{
               System.out.println("Bitte geben sie eine positive Zahl ein, 0 beendet das Prgramm:");
            zahl= eingabe.nextLong();
         }while (zahl<0);
         do{
            r=zahl%10;
            zahl2=zahl/10;
            qs= r+zahl2;
            zahl=qs;
               //System.out.println("Bisherige Schritte: " +zahl);
         }while(qs>=10);
         System.out.println("Die einstellige Quersumme der eingegebenen Zahl ist: "+qs);
      }while (zahl!=0);
      System.out.println("Das Programm wurde beendet!");
   }
}

Hallo, ich bin noch ein Anfänger und versuche gerade erst durch den Stoff durchzusteigen, bitte keine Haue

Folgendes Problem: ich soll eine Quersumme von der Zahl 1543 (als Beispiel, beliebige vierstellige Zahl) bestimmen, und zwar gibt es einige Vorgaben:

- die Quersumme einer natürlichen Zahl soll berechnet werden
- wenn der Anwender eine negative ganze Zahl eingibt, wir diese mit (-1) multipliziert
- für den ganzzahligen Rest soll der Modulooperator (%) eingesetzt werden, für die Berechnung ganzzahliger Quotienen der Divisionsoperator (/)
- die Summanden der Quersumme werden in einer Schleife berechnet. Nach Ende der Schleife wird die Quersumme ausgegeben

soviel dazu. so sieht im Moment mein Programm aus:

class A1B3
{public static void main(String args[])
{int q=1543;
int su=1;
int m=10;
System.out.println("Quersumme");
while (q>=1)
{ su=q%m;
{ System.out.println(q+"%"+m+"="+su);
q=q/m;
}
System.out.println("Ende der Berechnung");
}
}
}

ich hab die Summanden ausgegeben. Problem ist jetzt aber, wie ich die Summanden am Ende der Schleife addiere, um auf die Quersumme zu kommen. Wie mache ich das denn? Und das mit der Multiplikation von (-1) hab ich auch nocht nicht ganz begriffen...hoffe ihr könnt mir helfen. 

Hallo, ich bin noch ein Anfänger und versuche gerade erst durch den Stoff durchzusteigen, bitte keine Haue

Folgendes Problem: ich soll eine Quersumme von der Zahl 1543 (als Beispiel, beliebige vierstellige Zahl) bestimmen, und zwar gibt es einige Vorgaben:

- die Quersumme einer natürlichen Zahl soll berechnet werden
- wenn der Anwender eine negative ganze Zahl eingibt, wir diese mit (-1) multipliziert
if(zahl < 0) zahl * -1;
- für den ganzzahligen Rest soll der Modulooperator (%) eingesetzt werden, für die Berechnung ganzzahliger Quotienen der Divisionsoperator (/)
- die Summanden der Quersumme werden in einer Schleife berechnet. Nach Ende der Schleife wird die Quersumme ausgegeben

soviel dazu. so sieht im Moment mein Programm aus:

class A1B3
{public static void main(String args[])
{int q=1543;
int su=1;
int m=10;
System.out.println("Quersumme");
while (q>=1)
{ su=q%m;
{ System.out.println(q+"%"+m+"="+su);
q=q/m;
}
System.out.println("Ende der Berechnung");
}
}
}

ich hab die Summanden ausgegeben. Problem ist jetzt aber, wie ich die Summanden am Ende der Schleife addiere, um auf die Quersumme zu kommen. Wie mache ich das denn? Und das mit der Multiplikation von (-1) hab ich auch nocht nicht ganz begriffen...hoffe ihr könnt mir helfen. 
Und jetzt zum Rest:
Wenn du einen Summand ausgeben kannst, kannst du ihn auch Speichern, bzw. ihn gleich auf die Quersumme addieren, das gibt die aufgabenstellung her:
int quersumme = 0;

innerhalb der schleife:
quersumme += summand;
Am ende:
System.Out.Println("Quersumme: " + quersumme);

Rest der Source passt, nur das beschriebene noch an den richtigen stellen einfügen ;) 

Ahja: *-1 tut nichts anderes als deine Negative in eine Positive Zahl zu verwandeln (ich denk das ist dir klar?), d.h. du gehst davon aus, dass du die Quersumme des Betrags bildest. 

danke das hat mir geholfen  ;)

ach ja mir ist aufgefallen dass ich vergessen hab mit (-1) zu multiplizieren. Wo muss die Anweisung

 if(zahl < 0) zahl * -1;

denn hin? blicke da irgendwie nicht durch.

Wo willst du's denn prüfen?
Die Prüfung macht nur Sinn _vor_ der Schleife (danach ist's müllig, währenddessen kriegst du abwechselnd einen Positiven und einen negativen Wert den du addierst oder so - je nach Position), Im Prinzip gehört die prüfung hinter die Eingabe, aber in deinem Fall ist die Eingabe die deklaration von q, also wäre vor beginn der schleife und nach der deklaration von q zu prüfen wie q aussieht und ggf. der Betrag zu bilden.   

ok hat sich geklärt


« Zahl1 größer kleiner als Zahl2, oder gleich groß?VB 2008 express: größer kleiner gleich null ?? »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Tag
Ein Tag ist ein englischer Begriff und bedeutet so viel wie Etikett, Mal, Marke, Auszeichner und Anhänger. Generell ist Tag eine Auszeichnung eines Datenbetandes mit...

Java
Java ist eine von der Firma SUN entwickelte Programmiersprache. Da Java unabhängig vom Betriebssystem läuft, kann ein einmal geschriebenes Programm auf allen Ja...

Javascript
JavaScript ist eine weit verbreitete Skriptsprache, die ursprünglich von Netscape für das DOM-Scripting für Webseiten entwickelt wurde. Sie hat sich seitde...