# Quersumme bilden lassen



## paco89 (1. Apr 2012)

hallo liebes forum,

ich wollte ein programm schreiben, dass die zahlen von 1 bis 100 addiert, danach die wurzel aus der summe zieht und anschließend die quersumme von dem wurzelergebnis zieht.
bis zum wurzelziehen hab ich es hinbekommen, aber wie kann ich das programm so erweitern, dass ich von dem ergebnis auch die quersumme bilden kann?

hier ist mein code:


```
public class Rechner {

	private static double wurzel()
	{	double res = 0;
		for (int i=1; i<=100; i++)
		{
			res += i; 
		}
		
			res = Math.sqrt(res);
	
		return res;
	}
		
		public static void main(String [] args)
		{
			System.out.println(Rechner.wurzel());
		}
}
```


als ergebnis kommt da 71.0633....nochwas raus...wie kann ich davon die quersumme  bilden lassen?


wäre über jede hilfe dankbar....


----------



## timbeau (1. Apr 2012)

Die Zahl in einen String umwandeln, diesen String splitten und über eine Schleife jede Zahl zu int casten und addieren


----------



## paco89 (1. Apr 2012)

ach, in der aufgabenstellung stand auch dass ich die zahl vor dem wurzelziehen noch miteinander multiplizieren muss.....also sieht mein code jetzt folgendermaßen aus:


```
public class Rechner {

	private static double wurzel()
	{	double res = 0;
		for (int i=1; i<=100; i++)
		{
			res += i; 
		}
			res *= res;
			res = Math.sqrt(res);
	
		return res;
	}
		
		public static void main(String [] args)
		{
			System.out.println(Rechner.wurzel());
		}
}
```


als ergbnis kommt da jetzt 5050.0 raus. quersumme ist ja 10. aber das will ich ja mit dem code realisieren. also habe ich mal versucht die zahl in einen string umzuwandeln, dann ne schleife usw....das sah dann so aus....



```
public class Rechner {

	private static double wurzel()
	{	double res = 0;
		for (int i=1; i<=100; i++)
		{
			res += i; 
		}
			res *= res;
			res = Math.sqrt(res);
			
			String res1 = (String) res;
			
			
	
		return res1;
	}
		
		public static void main(String [] args)
		{
			System.out.println(Rechner.wurzel());
		}
}
```


geht das mit dem casten in einen string ? aber das mit dem string aufsplitten habe ich nicht kapiert....


----------



## vanny (1. Apr 2012)

die Quersumme bis zum Komma/Punkt also ohne die Dezimalen oder alle Stellen deines double?

String#valueOfDouble(deinDouble); ginge
String res1 = "" + res; sollte auch gehen
String res1 = res.toString(); wäre auch einen Versuch wert.

ansonsten solltest du den double zu einem int machen und ggf. vorher noch runden.

Gruß Vanny


----------



## timbeau (1. Apr 2012)

String [] splittedString = String.valueOf(int i).split("");

Siehe JavaAPI String


----------



## paco89 (1. Apr 2012)

so ich habe den code jetzt geändert zu :


```
public class Rechner {
 
    private static double wurzel()
    {   double res = 0;
        for (int i=1; i<=100; i++)
        {
            res += i; 
        }
            res *= res;
            res = Math.sqrt(res);
            
            String res1 = "" + res;
			String [] splittedString = String.valueOf(int i).split("");
            
            
    
        return res1;
    }
        
        public static void main(String [] args)
        {
            System.out.println(Rechner.wurzel());
        }
}
```


ist das richtig so? wie muss ich jetzt die schleife einbauen, das habe ich auch nicht ganz verstanden....;(


----------



## XHelp (1. Apr 2012)

Ich würde an deiner Stelle erstmal eine Ganzzahl daraus machen ( sqrt(a^2) ist überraschender Weise wieder a _(a ist ohnehin positiv)_), das erleichtert dir etwas die Arbeit. Ansonsten liefert eine Suche nach "Quersumme" hier im Forum bestimmt genügend Beispiele.


----------



## timbeau (1. Apr 2012)

```
public static void main(String[] args) {
		int i = 1234567;
		List<Integer> iList = splitInt(i);
		for (Integer integer : iList) {
			System.out.print(integer + "-");
		}

		//Ab hier ist es einfach
	}

	private static List<Integer> splitInt(int i) {
		List<Integer> iList = new LinkedList<Integer>();
		String tmp = String.valueOf(i);
		int mod = 10;
		for (int j = 0; j < tmp.length(); j++) {
			System.out.println(i%mod);
			iList.add(i%mod);
			i = i / mod;
			
		}
		Collections.reverse(iList);
		return iList;
		
		
	}
```

Wäre noch eine Idee.


----------

