Eingabe von Arrays geht über gewünschte Anzahl hinaus

macgyver2710

Mitglied
Hallo,

habe folgendes Problem:
Habe eine GUI erstellt bei der man eine Anzahl an Arrays eingeben kann.
Nach der Eingabe der Anzahl, kann man aber im nächsten Textfeld unendlich viele Arrays eingeben.
Ich hab keinen Schimmer weshalb das so ist. anbei der Sourcecode:e

Problem dürfte an der array_erzeugen() Methode liegen.


Java:
public class Arrayback2 {

	int AnzahlZahlen;
	int ZahlenZähler = 1;
	int ZahlenEingabe;
	
	int anz;
	
	
final JTextField fd1 = new JTextField();
final JTextField fd2 = new JTextField();


	JFrame f1 = new JFrame ("Zahleneingabe");
	JButton b1 = new JButton("Übernehmen");	
	
	JLabel noteL = new JLabel();
	
	JButton b2 = new JButton("Übernehmen");	
	JButton b3 = new JButton("Ende");
	JLabel info = new JLabel();

	
	
	JLabel ein = new JLabel("Eingegebene Zahlen: "); 
	JLabel l4 = new JLabel("Zahlen rückwärts: ");
	
	JLabel rueck = new JLabel();
	
	
	JLabel l7= new JLabel();
	
	JButton b4 = new JButton("Neue Eingabe");
	
	
	
	public static void main(String[] args) {
		
		Arrayback2 start = new Arrayback2();
		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 l1 = new JLabel("Anzahl Zahlen");
		l1.setBounds(24,10,140,10);
		f1.add(l1);
	
		
		fd1.setBounds(24,25,40,25);	
		f1.add(fd1);
			
		
		fd2.setBounds(24,75,40,25);	
		f1.add(fd2);
		fd2.setVisible(false);
		
		
//		l3.setBounds(24,140,180,20);
	

		l4.setBounds(39,140,140,20);
		f1.add(l4);
		l4.setVisible(false);
	
		rueck.setBounds(145,140,200,20);
		f1.add(rueck);
		rueck.setVisible(false);
	
		
		l7.setBounds(145,110,300,20);
		f1.add(l7);
		l7.setVisible(false);
		
		ein.setBounds(24,110,120,20);
		f1.add(ein);
		ein.setVisible(false);
		
		
		noteL.setBounds(26,55,60,20);
		noteL.setText(Integer.toString(ZahlenZähler) + " . Zahl");
		noteL.setVisible(false);
		f1.add(noteL);
		
		
		
			
					
			fd1.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent e) {
			ENTERkeypressed (e);
	}
					});
			
			fd2.addKeyListener(new KeyAdapter() {
				public void keyPressed(KeyEvent e) {
				ENTERkeypressed2 (e);
		}
						});
			
			
			
			b4.addKeyListener(new KeyAdapter() {
				
				public void keyPressed(KeyEvent e) {
					
					ENTERkeypressed3(e);
					
					}
						});
		
			
		
		class ButtonListener1 implements ActionListener	  {
			
		public void actionPerformed (ActionEvent e){
			
			arrayanzahl();
			
			
					}
				}
		
		
		b1.setBounds(120,25,110,25);
		f1.add(b1);
		b1.addActionListener(new ButtonListener1());
		
		
		
		class ButtonListener2 implements ActionListener{
			
			public void actionPerformed (ActionEvent e){
				

				array_erzeugen();	
				
				
			    
			}
			
		}
		
		
		
		b2.setBounds(120,75,110,25);
		f1.add(b2);
		
		b2.setVisible(false);
		
		b2.addActionListener(new ButtonListener2());
		
		
		
		
		
		
		class ButtonListener3 implements ActionListener{
			
			public void actionPerformed (ActionEvent e){
				
				System.exit(0);	
				
			}
			
		}
	
		
		
		b3.setBounds(360,220,100,25);
		b3.addActionListener(new ButtonListener3());
		
		
		
		

		f1.add(b3);
		
	
		
		
		class ButtonListener4 implements ActionListener{
			
			public void actionPerformed (ActionEvent e){
		
					
							
		//		neue_berechnung();
			    
			}
			
		}
		
		
		
		b4.setBounds(320,35,140,25);
		b4.addActionListener(new ButtonListener4());
		
		
		
		f1.add(b4);
		b4.setVisible(false);
		
		
		
		f1.setVisible(true);
		
	
		    
		
	
	
	
	}	// Ende Methode fenster
	
	
	

		
	
		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 ENTERkeypressed3 (KeyEvent e) {
			
			if (e.getKeyCode() == KeyEvent.VK_ENTER) {		
			
			//	neue_berechnung();		
		
			}	
		}
		
		
		
		
		
		
		
		public void array_erzeugen(){
			
			ein.setVisible(true);
			l7.setVisible(true);
		
			int Feld = 0;
			int Eingabe;
				
			
			int [] Zahlenfeld = new int [AnzahlZahlen];
			
			
			for (Feld = 0 ; Feld < AnzahlZahlen ; Feld++ ) {
			
				
				Eingabe = Integer.parseInt(fd2.getText());		
							
				Zahlenfeld [Feld] = Eingabe;
			
				l7.setText(l7.getText() + Zahlenfeld [Feld] + " ");
				
				fd2.setText("");
			
			
			}
	
			
		
		
			
			
			
			

			fd2.setEditable(false);
			fd2.setFocusable(false);
		
		}
		
		
		
		
		
		
		
		
		
		public void arrayanzahl(){
			
			
			AnzahlZahlen = Integer.parseInt(fd1.getText());      
	
			
			if ((AnzahlZahlen > 10 ) || (AnzahlZahlen < 1)){
			
			JOptionPane.showMessageDialog(null, "Nur Zahlen von 1 bis 10 eingeben."); 
			fd1.setFocusable(true);
			fd1.selectAll();
				
			}
			
			
			else   {
		
		
		
		fd1.setEditable(false);
		fd1.setFocusable(false);
		
		b1.setVisible(false);
	   
		noteL.setVisible(true);
		
	    fd2.setVisible(true);
	    
	    fd2.setFocusable(true);
	    fd2.selectAll();
	    
	    b2.setVisible(true);
	 
			}
		}
	
		
}   // ENDE KLASSE
 
Moin,

Habe eine GUI erstellt bei der man eine Anzahl an Arrays eingeben kann.
Nach der Eingabe der Anzahl, kann man aber im nächsten Textfeld unendlich viele Arrays eingeben.
Ich hab keinen Schimmer weshalb das so ist. anbei der Sourcecode:e

Problem dürfte an der array_erzeugen() Methode liegen.
hmm, so wirklich steige ich durch Deinen Code nicht durch (ziemlich unstrukturiert, zu kryptische Bezeichner usw.) :noe:
Habe ihn aber dadurch letztlich auch nur überflogen ...

Ich vermute allerdings, dass Dein "array_erzeugen" zu früh aufgerufen wird (also vor "arrayanzahl") - oder zumindest werden KANN ...

Gruß
Klaus
 
Hallo Klaus,

habe den Code nochmals überarbeitet und hoffe er ist jetzt besser leserlich.
Es lassen sich leider immer noch unendlich viele Arrayfelder eingeben:

Java:
public class Array_ausgabe {

	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_ausgabe start = new Array_ausgabe();
		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);
		
		
		
			
					
			textfeld1.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent e) {
			ENTERkeypressed (e);
	}
					});
			
			textfeld2.addKeyListener(new KeyAdapter() {
				public void keyPressed(KeyEvent e) {
				ENTERkeypressed2 (e);
		}
						});
			
			
		
		
		class ButtonListener3 implements ActionListener{
			
			public void actionPerformed (ActionEvent e){
				
				System.exit(0);	
				
			}
			
		}
	
		
		
		ende_button.setBounds(360,220,100,25);
		ende_button.addActionListener(new ButtonListener3());
		f1.add(ende_button);
		

		f1.setVisible(true);
		
	
	}	// ENDE METHODE FENSTER
	
	
	

		
	
		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());      
	
			
			if ((AnzahlZahlen > 10 ) || (AnzahlZahlen < 1)){
			
			JOptionPane.showMessageDialog(null, "Nur Zahlen von 1 bis 10 eingeben."); 
			textfeld1.setFocusable(true);
			textfeld1.selectAll();
				
			}
			
			
			else   {
		
		
		
		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);
		
		}		
}

Ich hoffe du kannst du den Fehler finden, habe schon zik Stunden damit verbraten 🙁
Vielen Dank vorab.

Lg

Peter
 

Zurück
Oben