Array mit unbestimmter länge

Nerolex

Neues Mitglied
Hallo zusammen!

Ich quäle mich schon seit ein paar Tagen mit einem Problem rum:



Es sollen beliebig viele zahlen eingegeben werden die dann in einem Array gespeichert werden sollen.

Das ganze soll solange weitergehen bis man eine bestimmte Zahl (zB: 134) eingibt.

Ich habe im internet nicht wirklich hilfreiches gefunden

Würde mich auf "nicht zu schwere" antworten freuen obwohl ich jede berücksichtigen werde.

Grüße,
Alex
 

Ch4t4r

Aktives Mitglied
So gesehen hat jedes Array eine Länge (schließlich muss das System wissen, wieviel RAM benötigt wird), die so erstmal feststeht. Für dein Problem fallen mit spontan diese Lösungen ein:
- ArrayList verwenden (Größe ist variabel)
- Bei jeder neuen Zahl ein neues array (Länge +1) anlegen und den alten Inhalt kopieren, letztes Element ist dann die neue Zahl (nicht sehr effizient)
- ein Array mit Platz für viele Elemente anlegen und nur soweit belegen, wie benötigt (ebenfalls ineffizient und resourcenlastig)
 

Anfänger2011

Bekanntes Mitglied
Hi Nerolex,

hab das schnell mal eben geschrieben. Dann kannst dich daran etwas orietieren bzw. deinen Bedürfnissen / Vorgaben anpassen.

Hier der Code:
Java:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package pkg134;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**
*
* @author dominik
*/
public class Main extends JFrame implements ActionListener {

    private static JPanel panel = new JPanel();
    private static int width, height;
    private int checkNumber;
    private JButton button;
    private JTextField textfield;
    private ArrayList <Integer> arrayList = new ArrayList <Integer> ();
   
    public Main(){
        width = 150; //groeße des Frames
        height = 100;// "  "  "
        checkNumber = 134; //die kannst du dann ja deinen wuenschen anpassen ...
        initSwingForms(); //initieren der Swingformen Button und TextField
        setSwingForms(); //Einstellungen setzen wie groeße und Position
        addSwingForms(); //Formen dem Panel hinzufuegen
    }
   
    public void initSwingForms(){
        button = new JButton("Bestätigen");
        textfield = new JTextField("Gib eine Zahl ein ...");
    }
   
     public void setSwingForms(){
        //button kannst du hier selber zurechtrücken und ebenso das textfeld
        //button.setSize();
        //button.setLocation();
       
        //button einen ActionListener hinzufuegen um klicks zu registrieren
        button.addActionListener(this);
       
        //fields
        //textfield.setSize();
        //textfield.setLocation();
     }
    
    private void addSwingForms(){
        panel.add(textfield);
        panel.add(button);
    }
   
    public static void main(String[] args) {
        Main frame = new Main();//Frame erzeugen
        frame.setSize(width, height);//groeße setzen
        frame.setDefaultCloseOperation(EXIT_ON_CLOSE); // damit sich das Programm später richtig schließt
        frame.add(panel); // auf das Panel gezeichnete SwingFormen dem Frame hinzufuegen
        frame.setVisible(true); //frame sichtbar machen
    }
   
    //alle eintraeger der arraylist ueberpruefen lassen - macht sinn wenn du die positionen switchen willst
    private void checkAll(int n){
        for(int x=0; x < arrayList.size(); x++){
            if(arrayList.get(x) == n){
                JOptionPane.showMessageDialog(null, "Die Zahl " + n + " wurde gefunden!");
            }
        }
    }
   
    //check nur den letzten eintrag - bessere performance
    private void checkLast(int n){
        int temp = arrayList.size();
        if(arrayList.get(temp) == n){
            JOptionPane.showMessageDialog(null, "Die Zahl " + n + " wurde gefunden!");
        }
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        //prueft ob button geklickt wurde
        if(e.getSource() == button){
            //fuegt der arraylist an letzter position hinzu
            arrayList.add(Integer.valueOf(textfield.getText()));
            //fuehrt check aus
            checkLast(checkNumber);
        }
    }
   
}

Hoffe das hilft dir weiter. Über ein Daumenhoch würde ich mich freuen ;)
 

Ch4t4r

Aktives Mitglied
Hi Nerolex,

hab das schnell mal eben geschrieben. Dann kannst dich daran etwas orietieren bzw. deinen Bedürfnissen / Vorgaben anpassen.

Hier der Code:
Java:
-snip-

Hoffe das hilft dir weiter. Über ein Daumenhoch würde ich mich freuen ;)

Auch wenn du dir da bestimmt Arbeit gemacht hast, lernt man damit nicht gerade viel (einige Verstöße gegen die Code-Konventionen mal abgesehen ^^)
 

Flown

Administrator
Mitarbeiter
Wow ich muss @Ch4t4r einfach recht geben. Dieser Code den du geliefert hast @Anfänger2011 ist einfach nichts zum herzeigen. Damit hilfst du keinem.
Paar Punkte:
  • Man leitet nicht von JFrame ab
  • Anonyme ActionListener-Codes reichen völlig aus
  • Alle Felder unnötig
  • static falsch verwendet
  • deine CheckLast-Methode sinnlos (warum nicht gleich überprüfen?)
  • Man implementiert gegen Interfaces (List<...> list = new ArrayList<>();)
  • Sprechende Namen für Klassen wählen
Warum eigentlich eine Swing-Anwendung? Es reicht für so eine Übung wirklich nur eine Konsolenanwendung und mehr wurde auch nicht gefordert.
 

Anfänger2011

Bekanntes Mitglied
Danke das ist ja gut zu wissen. Bis jetzt hab ich das immer so mit guten Gewissens wie in meinen Buch gemacht. Also abgesehen von dem schlecht gewählten Klassennamen und der relativ unnötigen Methode Checklast natürlich. ;)
 

Flown

Administrator
Mitarbeiter
Ja die Bücher und solche Swing-Sachen. Keine Ahnung warum die immer von JFrame (und ActionListener implementieren) ableiten, aber ich nehme an, dass das Tutorial dann in eine Klasse passt.
 

black swan

Mitglied
Ich glaube es gibt keine Regel, "nicht von JFrame abzuleiten", sondern man sollte sich überlegen, wann man grundsätzlich von einer Klasse ableitet (bspw. du möchtest die Klasse von der Du ableitest erweitern oder überschreiben). In Deinem Fall gibt es keine Grund abzuleiten, da Du JFrame lediglich instanzierst.
 

Flown

Administrator
Mitarbeiter
Ist schon eine Weile her, da ich auf Urlaub war, aber ich möchte hier auf diesen Thread verweisen, der sehr gut erklärt, warum "Composition over Inheritance" besser ist: HIER.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
Proxy Chars vor array übergabe toLowerUpcase Java Basics - Anfänger-Themen 14
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
S array 2 dimensional treppe Java Basics - Anfänger-Themen 3
S Array 2x2 Blöcke mit 0 und 1 Java Basics - Anfänger-Themen 10
C Array von Klassen Java Basics - Anfänger-Themen 2
julian0507 2Dim-Array Spaltensummen Java Basics - Anfänger-Themen 1
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Array.list vergleichen Java Basics - Anfänger-Themen 1
W Java-Code mit Array Java Basics - Anfänger-Themen 14
D Reflections & Generisches Array Java Basics - Anfänger-Themen 4
T Array Java Basics - Anfänger-Themen 2
T Array Java Basics - Anfänger-Themen 15
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
J Array Median bestimmen Java Basics - Anfänger-Themen 6
S Array Maximum bestimmen mit for und foreach Java Basics - Anfänger-Themen 7
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
N Array Java Basics - Anfänger-Themen 1
J Array Mittleren Wert bestimmen Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
M 2d array ohne längen anlegen Java Basics - Anfänger-Themen 4
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
O 2 Dimensionales Array Java Basics - Anfänger-Themen 6
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
javaBoon86 Array mehrere Dimensionen Java Basics - Anfänger-Themen 10
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
B Explizit Array definieren geht nicht? Java Basics - Anfänger-Themen 14
D Kleinste Zahl in Array finden die vorher noch errechnet werden müssen. Java Basics - Anfänger-Themen 4
L Gegebenes Array sortieren, indem zufällige Zahlenpaare aus Array ausgewählt werden Java Basics - Anfänger-Themen 14
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
Temsky34 Array IndexOf nicht verfügbar Java Basics - Anfänger-Themen 18
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
E Durch Muster in Array iterieren Java Basics - Anfänger-Themen 3
L Frage zum Array Java Basics - Anfänger-Themen 1
C 2D Array Ausgabe mit for-Schleife i,j Java Basics - Anfänger-Themen 4
D Methode: Array Reihenfolge tauschen Java Basics - Anfänger-Themen 3
julian0507 Array aus Methode in anderer Methode sichtbar machen Java Basics - Anfänger-Themen 10
P Array vom Typ Klasse Java Basics - Anfänger-Themen 18
Lion.King Array deklarieren und initialisieren Java Basics - Anfänger-Themen 5
P Array-Objekte-Aufruf Java Basics - Anfänger-Themen 22
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
M Methoden Zweidimensionaler Array mit Setter Methode ändern Java Basics - Anfänger-Themen 4
AkiJou Zeile in 2d Array löschen Java Basics - Anfänger-Themen 2
LilliCherry Array in einer Zeile ausgeben Java Basics - Anfänger-Themen 6
A Elemente in einem Array Java Basics - Anfänger-Themen 5
A Vorkommende Farben ermittel und als Array zurückgeben Java Basics - Anfänger-Themen 7
AhmadSlack Array Java Basics - Anfänger-Themen 7
Jambolo Kartenhand Array Java Basics - Anfänger-Themen 14
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
S Eine Variable in einem Array speichern Java Basics - Anfänger-Themen 5
T Methode, die prüft ob in einem Int-Array maximal 2 Zahlen enthalten sind, die größer als ihr Vorgänger sind Java Basics - Anfänger-Themen 5
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
krgewb byte-Array, das ein Bild repräsentiert Java Basics - Anfänger-Themen 1
1 Array rekursiv durchlaufen Java Basics - Anfänger-Themen 8
I Methoden Wieso wird mein Array "a" verändert und meine Variable "a" nicht? Java Basics - Anfänger-Themen 4
EykS 3D Druckdatei basierend auf 3D Array? Java Basics - Anfänger-Themen 3
sserio Array funktioniert nicht Java Basics - Anfänger-Themen 2
sserio Iterierung über ein zweidimensionales Array Java Basics - Anfänger-Themen 16
sserio Zweidimensionales Array [][] wird untereinander ausgegeben Java Basics - Anfänger-Themen 14
Chris.089 2 Werte im Array tauschen Java Basics - Anfänger-Themen 6
D EinMalEins mithilfe einer for-Schleife und Array Java Basics - Anfänger-Themen 1
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
L Gridmuster in einem Array Java Basics - Anfänger-Themen 2
sgtcoopa Array übergeben Schleife Java Basics - Anfänger-Themen 0
B Compiler-Fehler Array aus Objekten übergeben Java Basics - Anfänger-Themen 7
padde479 Array Multiplikation der ersten n Zahlen Java Basics - Anfänger-Themen 7
G zweidimensionales int Array sortieren Java Basics - Anfänger-Themen 57
W Array ausgeben Java Basics - Anfänger-Themen 29

Ähnliche Java Themen

Neue Themen


Oben