ArrayListe ist nur lokal vorhanden

Amstaff51

Mitglied
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

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);
nicht mehr funktioniert.

Was müsste man verändern, damit maxlist auch global vorhanden ist?
 

Sergeant_Pepper

Bekanntes Mitglied
Hi,

so gehts (Zeilen 8 und 35):

Java:
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>();
        ArrayList<Integer> maxliste = null;
        
        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
                    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
    }

EDIT: Klassennamen solltest du groß schreiben. Das ist eine Konvention, die die Lesbarkeit von fremdem Code erleichtert. Besonders wenn es nicht nur ein kleines Übungsprogramm ist.
 
Zuletzt bearbeitet:

Kevin94

Top Contributor
Mal ein paar generelle Anmerkungen zum Code:
Die Variablen summe und max sind eingetlich völlig unnötig, du kannst statt dessen auch die Methode size() von der entsprechenden ArrayList aufrufen. Das prüfen, ob die aktuelle Liste die bisher meisten Zahlen enthält, würde ich erst nach Abbruch der while-Schleife machen, da sie dort nur einmal ausgeführt wird.

Der Code so wie ich ihn schreiben würde:
Java:
public static void main(String[] args)
    {
        ArrayList<Integer> liste = new ArrayList<Integer>();
        ArrayList<Integer> maxliste = null;
        
        for (int a = 1000; a <= 9999; a = a + 1)
        {
            int b = a;
            liste.clear();
            
            while (a != 0)
            {
                int 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);
            }
            if (maxliste==null || maxliste.size()<liste.size())
            { 
                maxliste = new ArrayList<Integer>(liste);
            }
        }
        System.out.println(maxliste);
        System.out.println(""); //Leerzeile 
        System.out.println("Es wurden " + maxliste.size() + " Zufallszahlen erzeugt"); //Ausgabe wieviel Zufallszahlen ausgegeben wurden
    }
 

Sergeant_Pepper

Bekanntes Mitglied
Wahrscheinlich ist es auch sauberer, statt

Java:
ArrayList<Integer> maxliste = null;
zu schreiben:
Java:
ArrayList<Integer> maxliste = new ArrayList<Integer>();

Für dein Programm ist das egal, aber die Zuweisung von null ist in gößeren Prgrammen grundsätzlich eine Quelle für NullPointerExceptions.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
G Bei dynamischer Arrayliste nach jeder Auswahl Zahl entfernen Java Basics - Anfänger-Themen 3
M Arrayliste mit beliebig vielen Namen befüllen Java Basics - Anfänger-Themen 4
Poppigescorn Arrayliste Mittels Scanner erweitern Java Basics - Anfänger-Themen 6
Poppigescorn Mithilfe einer Arrayliste einen Notenspiegel ausgeben Java Basics - Anfänger-Themen 12
A Objekt in Arrayliste Java Basics - Anfänger-Themen 2
L Arrayliste von hinten nach vorne ausgeben Java Basics - Anfänger-Themen 10
X Methode kann auf ArrayListe nicht zugreifen! Java Basics - Anfänger-Themen 10
F ArrayListe manuell programmieren? Java Basics - Anfänger-Themen 24
S Daten aus zwei Verschiedenen Tabellen in eine ArrayListe Java Basics - Anfänger-Themen 4
J Best Practice [Code Verbesserung] TXT einlesen und in Arrayliste speichern Java Basics - Anfänger-Themen 5
S ArrayListe in einer JComboBox anzeigen Java Basics - Anfänger-Themen 10
R Eine Arrayliste in XML abspeichern und laden können Java Basics - Anfänger-Themen 7
P Klasse in Klasse einfügen (arrayliste) Java Basics - Anfänger-Themen 7
O ArrayListe sortieren anhand zweier Parameter Java Basics - Anfänger-Themen 4
L Input/Output Sortieren Speichern Laden von ArrayListe Java Basics - Anfänger-Themen 14
B ArrayListe in Arraylist Problem Java Basics - Anfänger-Themen 3
N Kopieren einer ArrayListe Java Basics - Anfänger-Themen 3
S ArrayListe??? Java Basics - Anfänger-Themen 2
J Arrayliste in RandomAccesFile speichern Java Basics - Anfänger-Themen 7
D komplizierte Arrayliste sortieren Java Basics - Anfänger-Themen 17
J Arrayliste (gefüllte mit arrays) nach datum sortieren Java Basics - Anfänger-Themen 3
W ArrayListe , Wo ist mein Fehler? Java Basics - Anfänger-Themen 6
K ArrayListe erstellen mit vielen (unendlichen) Weren ??? Java Basics - Anfänger-Themen 29
B Aufgabe: Arrayliste ausgeben, stimmt es so? Java Basics - Anfänger-Themen 8
G Arrayliste mit Objekt anhand von Strings sortieren Java Basics - Anfänger-Themen 8
G ArrayListe vom Server nach Client schicken Java Basics - Anfänger-Themen 17
C ArrayListe ->liste.get Java Basics - Anfänger-Themen 13
ChaosNo1 Arrayliste global nutzen? Java Basics - Anfänger-Themen 4
C Elemente aus Arrayliste ausgeben Java Basics - Anfänger-Themen 6
S Arrayliste füllen Java Basics - Anfänger-Themen 4
O ArrayListe mit Objekten Java Basics - Anfänger-Themen 2
B ArrayListe . WIE AUSLESEN ? Java Basics - Anfänger-Themen 5
G ArrayListe Java Basics - Anfänger-Themen 14
T Objekte aus Datei in ArrayListe werfen Java Basics - Anfänger-Themen 3
I Webhook lokal empfangen Java Basics - Anfänger-Themen 21
T Erkennen ob ein Pfad lokal oder im Netzwerk ist Java Basics - Anfänger-Themen 13
B Mit Java-Programm Daten aus MySQL-Datenbank auslesen, lokal und nicht lokal. Java Basics - Anfänger-Themen 10
B FTP Zugriff nur lokal Java Basics - Anfänger-Themen 3
G Sessionüberprüfung funktioniert lokal aber nicht auf dem Server! Java Basics - Anfänger-Themen 12
Y Applet lokal executable machen, externe Files inkludieren Java Basics - Anfänger-Themen 8
B JDBC Treiber lokal installieren ? Java Basics - Anfänger-Themen 2
M Java 3D lokal ausführen? Webstart lokal ausführen? Java Basics - Anfänger-Themen 2
A Googel Lokal abfragen Java Basics - Anfänger-Themen 7
G Datei lokal öffnen Java Basics - Anfänger-Themen 5
S Bild vom Internet lokal abspeichern Java Basics - Anfänger-Themen 4
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
O Ich ahbe einen char und diesen soll ich bei .matches prüfen, also ob der char in meiner Zeichenkette vorhanden ist, wie mache ich das? Java Basics - Anfänger-Themen 9
J ArrayList auf bereits vorhanden eintrag prüfen Java Basics - Anfänger-Themen 5
T Eclipse deinstallieren nicht vorhanden? Java Basics - Anfänger-Themen 4
J Erste Schritte Java-Grundkenntnisse vorhanden, wie jetzt loslegen?! Java Basics - Anfänger-Themen 7
H Fehlerausgabe vorhanden Java Basics - Anfänger-Themen 3
G Überprüfen ob alle Ziffern von 1-9 in einem Integer vorhanden sind Java Basics - Anfänger-Themen 6
J App.jar muss im Projekt App als Bibliothek vorhanden sein?! Java Basics - Anfänger-Themen 1
L Methoden BASE64.getEn/Decoder nicht vorhanden Java Basics - Anfänger-Themen 6
M Aus Datei auslesen und untersuchen ob diese Zeile schon vorhanden ist Java Basics - Anfänger-Themen 3
X Tools.jar für Gluon nicht vorhanden Java Basics - Anfänger-Themen 3
Tacofan Hangman - ist der Buchstabe vorhanden wenn ja wo kommt er vor Java Basics - Anfänger-Themen 6
U Prüfung, ob Datei vollständig vorhanden Java Basics - Anfänger-Themen 8
M Eclipse.exe/ symbol nicht vorhanden. kann nicht starten :S Java Basics - Anfänger-Themen 10
D Methoden Abfrage ob ein Wert bereits vorhanden ist Java Basics - Anfänger-Themen 1
M Class nach Namensänderung nicht mehr vorhanden Java Basics - Anfänger-Themen 6
S Vokale vorhanden?? Java Basics - Anfänger-Themen 2
I Zwei Listen: Wenn nicht vorhanden löschen Java Basics - Anfänger-Themen 4
W Methoden Ausgabe true wenn nur Ziffern <= 1 vorhanden Java Basics - Anfänger-Themen 9
H Prüfen, ob jpg image schon vorhanden ist, bevor es geladen wird Java Basics - Anfänger-Themen 13
Q queue.remove Element trotzdem noch vorhanden. Java Basics - Anfänger-Themen 10
S A* Path Algorithmus in Java schon vorhanden Java Basics - Anfänger-Themen 3
E Prüfen, ob ein Bild im Internet vorhanden ist? Java Basics - Anfänger-Themen 11
M Icons in Jar Datei nicht vorhanden Java Basics - Anfänger-Themen 9
N Methoden Test ob Server vorhanden ist Java Basics - Anfänger-Themen 4
S ArrayList nur ergänzen wenn Element noch nicht vorhanden Java Basics - Anfänger-Themen 4
L Textzeilen nach 2 Wörtern untersuchen wenn vorhanden Zeile in neuen Text ausgeben wenn nicht löschen Java Basics - Anfänger-Themen 10
-horn- Abfrage, ob (XML-)Datei vorhanden ist Java Basics - Anfänger-Themen 7
P java.lang.ClassNotFoundException obwohl Klasse vorhanden Java Basics - Anfänger-Themen 6
B NullPointerException obwohl Wert vorhanden? Java Basics - Anfänger-Themen 4
G SaveDialog Dateiendung nicht anhängen wenn bereits vorhanden Java Basics - Anfänger-Themen 2
? java.util.Properties Wert von key mehrfach vorhanden Java Basics - Anfänger-Themen 13
T Methode IstInMenge? vorhanden? Java Basics - Anfänger-Themen 4
G Kein EJB-Package vorhanden Java Basics - Anfänger-Themen 2
K Überprüfen ob Datei vorhanden Java Basics - Anfänger-Themen 2
G Prüfen ob Ordner vorhanden, wenn nicht anlegen? Java Basics - Anfänger-Themen 2
S Nummern verschlüsseln, prüfen ob vorhanden in Datenbank Java Basics - Anfänger-Themen 2
G Fehler: Methode für Typ nicht def. obwohl Methode vorhanden Java Basics - Anfänger-Themen 7
Q Prüfen, ob ein FTP-Verzeichnis vorhanden ist Java Basics - Anfänger-Themen 2
D Installation: Problem, wenn Java nicht vorhanden ist. Java Basics - Anfänger-Themen 5
K Nur .class Datei aber keine .java Datei vorhanden Java Basics - Anfänger-Themen 2
M Datei vorhanden ja/nein? Java Basics - Anfänger-Themen 9
U Abfrage ob Datei vorhanden? Java Basics - Anfänger-Themen 4
R Auslesen, bis keine Objekte mehr vorhanden sind Java Basics - Anfänger-Themen 26
S Keine Datei vorhanden, kein Abbruch Java Basics - Anfänger-Themen 18
C Wie kann ich schauen ob ein Ordner vorhanden ist Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben