Moin, ich schreibe im Moment ein Programm, das aus 4-Stelligen Anfangszahlen endlich viele Pseudo Zufallszahlen erzeugt, indem die Anfangszahl quadriert wird und dann die 4 mittlere Zahlen genommen werden und wieder quadriert werden und das alles so lange, bis sich die Zahlen wiederholen (Middle Square Methode).
Die Zufallszahlen werden in einer Arraylist gespeichert. Ich möchte am Ende die Zahlenfolge ausgeben, mit den meisten erschaffenen Zufallszahlen, das ganze habe ich mit
gemacht.
Das Problem ist, dass maxliste dann nur in meiner Schleife deklariert ist und ich sie nach der Schleife nicht ausgeben kann. Ich kann maxliste auch nicht vor der Schleife deklarieren, da sonst
nicht mehr funktioniert.
Was müsste man verändern, damit maxlist auch global vorhanden ist?
Die Zufallszahlen werden in einer Arraylist gespeichert. Ich möchte am Ende die Zahlenfolge ausgeben, mit den meisten erschaffenen Zufallszahlen, das ganze habe ich mit
Java:
import java.util.ArrayList;
public class aufgabe32array {
public static void main(String[] args) {
int [ ] max=new int[2]; /* Erzeugung eines Arrays mit der Feldgröße 2 */
int quad=0;
int summe=0;
ArrayList<Integer> liste = new ArrayList<Integer>();
for (int a=1000;a<=9999;a=a+1) {
int b = a;
liste.clear();
summe=0;
while (a!=0) {
quad = b * b; //quad = Anfangszahl zum Quadrat
quad = quad / 100; //quad durch 100 um die ersten beiden Ziffern zu entfernen
quad = quad % 10000; //durch 10000 um die beiden vorderen Ziffern zu erhalten
b = quad; //a wird zu der neuen mid square
if (liste.contains(quad)) {
break;
}
liste.add(quad);
summe=summe + 1; //Summe = Anzahl der Durchläufe, erhöht sich immer um 1
max[0]=summe; //Anzahl der Durchläufe, also Anzahl der erzeugten Zufallszahlen in Array max[0] speichern
if (max[1] < max[0]) { //wenn die Anzahl der Durchläufe die in max[1] gespeichert worden sind, kleiner ist
max[1] = max[0]; //soll max[1] den neuen höchsten Wert annehmen
ArrayList<Integer> maxliste= new ArrayList<Integer>(liste);
}
}
}
System.out.println(maxliste);
System.out.println(""); //Leerzeile
System.out.println("Es wurden " + max[1] + " Zufallszahlen erzeugt"); //Ausgabe wieviel Zufallszahlen ausgegeben wurden
}
}
gemacht.
Das Problem ist, dass maxliste dann nur in meiner Schleife deklariert ist und ich sie nach der Schleife nicht ausgeben kann. Ich kann maxliste auch nicht vor der Schleife deklarieren, da sonst
Java:
ArrayList<Integer> maxliste= new ArrayList<Integer>(liste);
Was müsste man verändern, damit maxlist auch global vorhanden ist?