# Ziffern auf Existenz überprüfen



## _So3r3n (27. Nov 2012)

Hi Leute,

ich habe ein kleines Problem und hoffe ihr könntet mir dabei ein wenig unter die Arme greifen, und zwar:

Ich möchte mit einer while-Schleife viele Zahlen erzeugen, so weit so gut, das klappt auch. Jetzt möchte ich aber schauen ob es diese Zahl die erzeugt wird, bereit vorher schon einmal erzeugt wurde.

Ich berechne zur Zeit:

i = 1000;

q = i * i;

i++;

Dann nehme ich die letzten drei Ziffern und möchte nun schauen, ob diese bereits vorher ausgerechnet wurden. Vielleicht kann mir ja jemand helfen. Wäre sehr schön.

Danke bereits im voraus 

Euer _So3r3n


----------



## Michael... (27. Nov 2012)

Die letzten drei Ziffern bekommst Du mit Modulo 1000 
	
	
	
	





```
%1000
```
. Diese kannst Du in eine List (z.B ArrayList) verwalten und bei jeder neuen Zahl prüfen, ob diese bereits in der List steckt.


----------



## k3ltis (27. Nov 2012)

Kannst du bitte mal den kompletten Quellcode in


```
so ein
```

Fenster posten?

Ich verstehe anhand deines kurzen Beispiels nicht, wie der genaue ErzeugungsAlgorithmus der generierten Zahlen abläuft.


----------



## _So3r3n (27. Nov 2012)

Hier der Quellcode


```
import java.util.ArrayList;


public class Zufall {

	public static void main (String[] a) {

		int i = 1000;
		int q;

		ArrayList liste = new ArrayList();


		while (i <=9999) {

			q = i * i;

			i++;

			liste.add(q);
			
		}

liste.size();

		System.out.println (liste.size());

		

		



	}


}
```

Ich muss jetzt noch schauen, dass ich bei "q" die mittleren 4 Ziffern nehmen kann und vergleichen ob diese bereits in der Liste sind.


----------



## Ark (27. Nov 2012)

_So3r3n hat gesagt.:


> Ich muss jetzt noch schauen, dass ich bei "q" die mittleren 4 Ziffern nehmen kann und vergleichen ob diese bereits in der Liste sind.


Definiere "mittlere 4 Ziffern".

Ark


----------



## _So3r3n (27. Nov 2012)

bei bsp. 3333*3333 kommt eine 8 stellige Zahl heraus, und davon die Mittleren Vier 

Also in diesem Fall 11108889 und davon die 1088


----------



## Michael... (27. Nov 2012)

und bei einer siebenstelligen Zahl?


----------



## _So3r3n (27. Nov 2012)

das kommt dann später, aber ich brauche erstmal ein Grundgerüst


----------



## k3ltis (27. Nov 2012)

Ich weiß zwar nicht, in wie weit dir das helfen soll, bereits vorhandene Zahlen auszusortieren aber du kannst zum Beispiel die Zahl zu einem String casten, die enstrpechenden Stellen rausschneiden und wieder zu einem int casten.

Oder du arbeitest mit Modulo, wie oben Beschrieben.

Um zu überprüfen, ob eine Zahl bereits vorhanden ist musst du wohl oder übel die gesamte Liste durchlaufen... oder du schreibst eine Funktion, die ein wiederholtes Aufrufen einer Zahl unmöglich macht, um sicher zu gehen, dass du keine doppelten bekommst... da geht bestimmt was mit System.getCurrentmillis...


----------



## _So3r3n (27. Nov 2012)

Gute Idee, dann habe ich noch ein Frage, wie streicht man denn den String so zusammen, dass nur noch die 4 Zahlen dort sind?


----------



## k3ltis (27. Nov 2012)

Ggf. mal einen Blick in die API riskieren:
String (Java Platform SE 6)

Da gibt es unmengen an Methoden um bestimmte Chars aus einem String rauszuholen.
Z.B.: substring(int beginIndex, int endIndex)


----------



## _So3r3n (27. Nov 2012)

ok, läuft jetzt auch, weiß nur noch nicht wie ich eine 0 vor die 7-stelligen bekomme.


----------



## Bernd Hohmann (27. Nov 2012)

_So3r3n hat gesagt.:


> ok, läuft jetzt auch, weiß nur noch nicht wie ich eine 0 vor die 7-stelligen bekomme.



Entweder über Formatter oder oldschool über 


```
int i = 123;
	String strResult = "00000000" + String.valueOf(i);
	strResult = strResult.substring(strResult.length() - 8);
	System.out.println(strResult);
```

(für einen 8stelligen String der rechtsbündig mit vornullen aufgefüllt werden soll)

Bernd


----------



## TKausL (27. Nov 2012)

```
int bla = 84564325;
int blabla = (bla/100)%10000;
```
Sollte auch mit 7-Stelligen funzen.


----------

