Arrayfelder werden trotz Beschränkung unbeschrenkt ausgegeben

macgyver2710

Mitglied
Habe eine GUI geschrieben in welcher man eine bestimmte Zahl von Arrayfeldern
eingibt, danach soll man für diese Felder die Zahlen eingeben.

Die Eingabe der Felder ist aber endlos möglich.
Ich habe keine Ahnung wieso.
Bitte um Hilfe.
anbei der Code:

Java:
public class Array_ein {

	      int AnzahlZahlen;    
	      int ZahlenZähler = 1;    
	      int ZahlenEingabe;        
	      int anz;        
	      
	      final JTextField textfeld1 = new JTextField();
	      final JTextField textfeld2 = new JTextField();      
	      JFrame f1 = new JFrame ("Zahleneingabe");            
	      JLabel noten_label = new JLabel();        
	      JButton ende_button = new JButton("Ende");    
	      JLabel info_label = new JLabel();             
	      JLabel eingegebene_zahlen_label = new JLabel("Eingegebene Zahlen: ");          
	      JLabel ausgabe_array_label = new JLabel();            
	      
	      
	      public static void main(String[] args) {                
	    	  
	    	  
	    	  Array_ein start = new Array_ein();        
	    	  start.fenster();                
	    	  
	      
	      }            
	      

	      public void fenster(){           
	    	  f1.setSize(500,300);       
	    	  f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);      
	    	  f1.setResizable(false);       
	    	  f1.setLayout(null);         
	    	  f1.setLocation(600,350);                    
	    	  
	    	  JLabel anzahl_zahlen_label = new JLabel("Anzahl Zahlen");        
	    	  anzahl_zahlen_label.setBounds(24,10,140,10);       
	    	  f1.add(anzahl_zahlen_label);                   
	    	  textfeld1.setBounds(24,25,40,25);          
	    	  f1.add(textfeld1);                            
	    	  textfeld2.setBounds(24,75,40,25);          
	    	  f1.add(textfeld2);        
	    	  textfeld2.setVisible(false);         
	    	  ausgabe_array_label.setBounds(145,110,300,20);       
	    	  f1.add(ausgabe_array_label);        
	    	  ausgabe_array_label.setVisible(false);               
	    	  eingegebene_zahlen_label.setBounds(24,110,120,20);       
	    	  f1.add(eingegebene_zahlen_label);        
	    	  eingegebene_zahlen_label.setVisible(false);                        
	    	  
	    	  noten_label.setBounds(26,55,60,20);       
	    	  noten_label.setText(Integer.toString(ZahlenZähler) + " . Zahl");        
	    	  noten_label.setVisible(false);        
	    	  f1.add(noten_label);                                                                   
	    	  f1.setVisible(true);
	      
	      
	      
	    	  textfeld1.addKeyListener(new KeyAdapter() {           
	    		  public void keyPressed(KeyEvent e) {            
	    			  ENTERkeypressed (e);    }                   
	    		  });
	      
	      
	    	  textfeld2.addKeyListener(new KeyAdapter() {               
	    		  public void keyPressed(KeyEvent e) {                
	    			  ENTERkeypressed2 (e);        }                        
	    		  });
	      
	         
	      
	      }    //     ENDE GUI
	      
	      private void ENTERkeypressed (KeyEvent e) {                    
	    	  if (e.getKeyCode() == KeyEvent.VK_ENTER) {                          
	    		  arrayanzahl();                  
	    		  
	    	  }       }
	      
	      
	      
	      
	      private void ENTERkeypressed2 (KeyEvent e) {                       
	    	  if (e.getKeyCode() == KeyEvent.VK_ENTER) {                              
	    		  array_erzeugen();                           
	    		  }           }
	      
	      
	      
	      
	      
	      public void arrayanzahl(){                                    
	    	  
	    	  AnzahlZahlen = Integer.parseInt(textfeld1.getText());          
	      
	
	      textfeld1.setEditable(false);                        
	      noten_label.setVisible(true);               
	      textfeld2.setVisible(true);                
	      textfeld2.requestFocus();        
	      textfeld2.selectAll();
	      
	      }
	      
	      
	      public void array_erzeugen(){                        
	    	  
	    	  eingegebene_zahlen_label.setVisible(true);            
	    	  ausgabe_array_label.setVisible(true);                    
	    	  
	    	  int Feld = 0;           
	    	  int Eingabe;                                      
	    	  
	    	  int [] Zahlenfeld = new int [AnzahlZahlen];                                   
	    	  
	    	  for (Feld = 0 ; Feld < AnzahlZahlen ; Feld++ ) {                                         
	    		  
	    		  Eingabe = Integer.parseInt(textfeld2.getText());                                                   
	    		  Zahlenfeld [Feld] = Eingabe;                            
	    		  ausgabe_array_label.setText(ausgabe_array_label.getText() + Zahlenfeld [Feld] + " ");                           
	    		  textfeld2.setText("");                                    }                    
	    	  
	    	  	  textfeld2.setEditable(false);           
	    	  	  textfeld2.setFocusable(false);                }       
	      
	      
  
	  }     // Programmende
 
In deiner For Schleife liest du die erste Eingabe ein und setzt den Text anschließend auf "" und bekommt hier dann beim Parsen eine NumberFormatException da er aus "" nichts machen kann. Er wartet nicht auf eine erneute Eingabe.

Außerdem schau dir mal bei welchem event die Methode array_erzeugen aufgerufen wird.
 
Zuletzt bearbeitet:
Hi,

Danke für deine Infos.

habs jetzt mit einer while Schleife gelöst.

Bin mir aber nicht sicher ob das eine
gescheite Lösung ist.

Wie würdest du es lösen ?

Vielen Dank vorab.

Lg

Peter


Java:
while (Zähler < AnzahlZahlen) {
					
			for (Feld = 0 ; Feld < AnzahlZahlen / AnzahlZahlen ; Feld++ ) {
			
				
				Eingabe = Integer.parseInt(textfeld2.getText());		
							
				Zahlenfeld [Feld] = Eingabe;
			
				ausgabe_array_label.setText(ausgabe_array_label.getText() + Zahlenfeld [Feld] + " ");
				
			}
		
			
			Zähler++;
			textfeld2.setText(null);
			
		}
 

Zurück
Oben