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)
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;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.util.ArrayList;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JOptionPane;importjavax.swing.JPanel;importjavax.swing.JTextField;/**
*
* @author dominik
*/publicclassMainextendsJFrameimplementsActionListener{privatestaticJPanel panel =newJPanel();privatestaticint width, height;privateint checkNumber;privateJButton button;privateJTextField textfield;privateArrayList<Integer> arrayList =newArrayList<Integer>();publicMain(){
width =150;//groeße des Frames
height =100;// " " "
checkNumber =134;//die kannst du dann ja deinen wuenschen anpassen ...initSwingForms();//initieren der Swingformen Button und TextFieldsetSwingForms();//Einstellungen setzen wie groeße und PositionaddSwingForms();//Formen dem Panel hinzufuegen}publicvoidinitSwingForms(){
button =newJButton("Bestätigen");
textfield =newJTextField("Gib eine Zahl ein ...");}publicvoidsetSwingForms(){//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();}privatevoidaddSwingForms(){
panel.add(textfield);
panel.add(button);}publicstaticvoidmain(String[] args){Main frame =newMain();//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 willstprivatevoidcheckAll(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 performanceprivatevoidcheckLast(int n){int temp = arrayList.size();if(arrayList.get(temp)== n){JOptionPane.showMessageDialog(null,"Die Zahl "+ n +" wurde gefunden!");}}@OverridepublicvoidactionPerformed(ActionEvent e){//prueft ob button geklickt wurdeif(e.getSource()== button){//fuegt der arraylist an letzter position hinzu
arrayList.add(Integer.valueOf(textfield.getText()));//fuehrt check auscheckLast(checkNumber);}}}
Hoffe das hilft dir weiter. Über ein Daumenhoch würde ich mich freuen
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.
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.
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.
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.
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.