Quersummenberechner

deni100

Aktives Mitglied
Hallo Jungs und Mädels , mache gerade in der Schule JAVA. Bin von VB auf JAVA umgestiegen (auch wegen der Schule). Muss mal ein bisschen lernen, da wir am Mittwoch auch ne Arbeit schreiben.


Java:
package zahlen;

public class Zahlenklasse {
	double rest,zahl,anzahltausend,anzahlhundert,anzahlzehner,anzahleiner,ergebnis;
	public void werteEinlesen(){
	
	
	    zahl = 15;
			
		
}
	public void werteBerechnen(){
		rest=zahl;	
		anzahltausend=rest/1000;
		rest=rest%1000;
		anzahlhundert=rest/100;
		rest=rest%100;
		anzahlzehner=rest/10;
		rest=rest%10;
		anzahleiner=rest;
		ergebnis =anzahltausend+anzahlhundert+anzahlzehner+anzahleiner; 
	}
	public void werteAusgeben(){
		System.out.println("Quersumme " + ergebnis);
	}
}

Das ist meine Fachklasse, was mache ich hier falsch.
Danke sehr.
MfG
Mustafa
 
A

A0027301

Gast
Java:
public class Main
{
public static void main(String[] args)
    {
    String eingabe="24434999623";
    int ergebnis=0;
    for(int i=0;i<eingabe.length();i++)
        {
        ergebnis+=Integer.valueOf(eingabe.substring(i,i+1));
        }
        System.out.println(ergebnis);
    }

}
 

Der Müde Joe

Top Contributor
>mache gerade in der Schule JAVA

schön

>was mache ich hier falsch.

double benutzen (--> Fliesskommazahl)

Wenn du
1500 / 1000 rechnest ist das eine int rechnung (kein double vorhanden) = 1
wenn mindestens ein double / float vorhanden ist, ist dies keine int rechnung mehr
1500 / 1000d = 1.5 (ich hoffe mal, kann auch sein das da 1.49999999 oder so was raus kommt).

EDIT:
Da mitlerweilen eh schon x-Lösungen da sind geb ich auch noch eine zum besten:
Java:
int sum = 0;
int number = 12345;
for(char c : String.valueOf(number).toCharArray()) {
	sum += Character.digit(c, 10);
}
System.out.println(sum);
 
Zuletzt bearbeitet:

TiZi37

Mitglied
Ich denke es ist gar nicht nötig für tausender etc. eigene Variablen zu definieren einfacher wäre es doch wenn du nur eine nimmst und sagst das die quersumme gleichquersumme der Rest von der Zahl / 10 sein soll und danach du die Zahl durch zehn teilst dadurch rechnest du von Hinten begonnen die Zahlen immer zu der Quersumme dazu. Ungefähr so:
Java:
	int zahl = 123456;
	    while (zahl != 0) {
	    	
            quersumme = quersumme + zahl % 10;
            zahl = zahl / 10;
}

(nicht getestet aber sollte funktionieren)
 

Haave

Top Contributor
Mir fallen ein paar Sachen ins Auge, was den Stil angeht: Die Methode werteEinlesen() liest ja gar keinen Wert ein, sondern setzt nur die Variable zahl auf 15 - damit hat die Methode ihren Namen nicht wirklich verdient. Ich find's auch etwas unübersichtlich, da sieben doubles in eine Zeile gequetscht zu sehen; würde ich eher verteilen, pro Zeile eine Variable. Es ist außerdem unnötig, so viele Variablen als Instanzvariablen zu deklarieren, da du die ganzen "Puffervariablen" wie anzahleiner, anzahlzehner etc. ja nur in einer einzigen Methode brauchst.

Weiß nicht, ob es das war, was du hören wolltest, da du nicht geschrieben hast, ob es eine Fehlermeldung gibt bzw. was du mit "was mache ich hier falsch" genau meinst.


EDIT:
Och nö, war ich schon wieder so langsam… :eek:
 

deni100

Aktives Mitglied
Danke, geil das ihr mir alle antwortet.
Der FEhler ist das , dass falsche Ergebnis kommt.

Java:
package zahlen;

public class Zahlenklasse {
	int rest,zahl,anzahltausend,anzahlhundert;
	int anzahlzehner,anzahleiner,ergebnis;
	public void werteEinlesen(){
	
	
	    zahl = 15;
			
		
}
	public void werteBerechnen(){
		rest=zahl;	
		anzahltausend=rest/1000;
		rest=rest%1000;
		anzahlhundert=rest/100;
		rest=rest%100;
		anzahlzehner=rest/10;
		rest=rest%10;
		anzahleiner=rest;
		ergebnis =anzahltausend+anzahlhundert+anzahlzehner+anzahleiner; 
	}
	public void werteAusgeben(){
		System.out.println("Quersumme " + ergebnis);
	}
}

ist das Problem gelöst, habe wie oben gesagt statt int , double benutzt.

Danke für die Antworten.

Ich bin echt erstaunt, wie schnell und wie viele von euch antworten. Einfach nur geil , dieses Forum. Ich komm immer wieder mal vorbei.
Danke euch :).
 

Neue Themen


Oben