quersumme bilden

3dsmaxer

Erfahrenes Mitglied
hallo

ich möchte in Java ein Programm erstellen, mit dem ich eine Zahl einlesen kann und, dass das mir dann die Quersumme von dieser Zahl berechnet.

Ich möchte bewusst nicht die Lösung von Wikidepia verwenden(http://de.wikipedia.org/wiki/Quersumme#Berechnung) sondern am liebsten die eingegebene Zahl in ein int-array eintragen lassen.
Da ich leider nicht weiß, wie man die Länge eines int-arrays bestimtm habe ich das folgendermaßen versucht:
PHP:
package quersumme;

import algoj.*;                               //zum einlesen

public class quersumme {

	
	public static void main(String[] args) {
		String zahl = IOUtils.readString();        //aus algoj
		int lange = zahl.length();
		int quersumme = 0;
		
		for (int i=0; i<(lange); i++){
			quersumme = quersumme + zahl.charAt(i);
		}
		
		
  System.out.println(zahl);
  System.out.println(lange);
  System.out.println(quersumme);
        

	}

}
http://www.tu-ilmenau.de/fakia/fileadmin/template/FakIA/Strukt-Fakultaet_IA/ipim/dbis/aup/algoj.jar

Wenn ich nun eine Zahl eingebe, dann hat die Variable lange und Variable zahl den richtigen Wert. nur für die Quersumme kommt Müll raus.

ein Beispiel: zahl = 12345, lange = 5, quersumme = 255 (müsste aber 15 sein)


weiß jemand woran das liegt, bzw. wie man das mit einem int-array lösen kann?
danke
 
Mit String.charAt bekommst du einen char zurück und keinen int.

Einen char kann man auf einen int casten (deswegen geht das was du tust), allerdings bekommt man denn den ASCII-Wert des char.

Dieser entspricht eben nicht dem Zahlenwert. Willst du den Zahlenwert haben musst du das mit Integer.parseInt() machen.
 
Wie mein Vorredner schon gesagt hat, es liegt an dem Cast von Char zu Integer. So sollte es laufen:

PHP:
package de.tutorials;

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

/**
 * @author Viktor Koop
 */
public class Quersumme {

    
    public static void main(String[] args) {
    	//Einlesen einer Zahl
    	BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
    	System.out.println("Geben sie eine Zahl ein!");
    	
    	boolean gültigeEingabe = false;
    	String zahl = "";
    	
    	//Die Eingabe soll darauf geprüft werden, ob es eine Zahl ist
    	while(!gültigeEingabe){
    		try{
    			zahl = console.readLine();
    			new Integer(zahl);
    			gültigeEingabe = true;
    		}
    		catch(NumberFormatException ex){
    			System.out.println("Es handelte sich um keine gültige Zahl.");
    		}
    		catch(IOException ex){}
    	}
    	
    	int länge = zahl.length();
        int quersumme = 0;
        String tmp ="";
        
        //Berechnen der Quersumme
        for (int i=0; i<(länge); i++){
        	tmp = zahl.substring(i, i+1);
            quersumme = quersumme + new Integer(tmp);
        }
        
        System.out.println(zahl);
        System.out.println(länge);
        System.out.println(quersumme);
    }
}
 
Zurück