In Arrayfeld schreiben wenn leer

deen

Mitglied
Hallo Liebe Community,
ich finde einfach keine Lösung für mein momentanes Problem.
Und zwar möchte ich prüfen, ob ein Array Feld leer ist und wenn ja soll dort die Eingabe gespeichert werden.
Damit wenn sich in meinem Programm ein neuer Benutzer anmeldet die Daten nicht einfach in Feld 0 und somit der erste Nutzer überschrieben werden.

Mein Lösungsversuch sieht wie folgt aus:
Java:
 for (int i = 0; Benutzer.user[i]!= "null"; i++) {
				Benutzer.user[i]=JOptionPane.showInputDialog(null, "Wählen Sie Ihren Benutzernamen: ", "Registration", 1);
				if (Benutzer.user[i].trim().length()==0 || Benutzer.user[i]== null ) {	
					JOptionPane.showMessageDialog(null,"Sie müssen mindestens 2 Zeichen eingeben!","Error",1);
				}else {
					Benutzer.password[i]=  (int)((Math.random()) * 9999 + 1);
					JOptionPane.showMessageDialog(null, "Der Benutzer "+Benutzer.user[i]+" wurde erstellt und das Passwort "+Benutzer.password[i]+" generiert. \n                                              Viel Erfolg!", "Registration", 1);
				JOptionPane.showMessageDialog(null, Benutzer.user[0]+Benutzer.user[1]+Benutzer.user[2]+Benutzer.user[3]); //Um zu testen obs klappt
				}
				
			}
 
Zuletzt bearbeitet:

Saheeda

Top Contributor
Der Kopf deiner for-Schleife ist schon falsch deklariert.
null ist eine eigene Referenz und darf nicht als string geschrieben werden. Ansonsten wird geprüft, ob in dem Feld ein string mit Inhalt "null" steht. Außerdem prüft du momentan, ob das Feld _nicht_ null ist, d.h., ob in dem Feld schon irgendwelche Daten stehen.

Der zweite Abschnitt bezeichnet die Bedingung, also "Wenn..." bzw. "Solange...", üblicherweise steht dort sowas wie i<= array.length

Ich würde das mit einer if-Abfrage verbinden:
Java:
for(int i = 0; i<Benutzer.user.length; i++){
if(Benutzer.user[i] == null){
//neue Registrierung
}

}

//bzw. als for-each-Schleife:
for(String s : Benutzer.user){
if(s == null){
//neue Registrierung
}

}

btw, könntest du bitte die Benutzer-Klasse posten? Benutzer.user und Benutzer.password sieht etwas seltsam aus.
 
Zuletzt bearbeitet:

deen

Mitglied
Es funktioniert leider immer noch nicht wie gewünscht. Also noch mal er soll prüfen, ob in Platz 1 schon ein Account ist und wenn nicht darf er da schreiben sonst muss er den nächsten Prüfen. Analytisch ist euer Lösungsvorschlag richtig, jedoch überschreibt er immernoch jedes mal den ersten Platz(Array Feld).
Ich habe mehrere Möglichkeiten probiert, meine jetzige ist diese:

Java:
import java.io.File;
import java.io.FileWriter; 
import java.io.IOException;
import java.io.PrintWriter;
import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.ImageIcon;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JLabel;

import java.awt.Font;

import javax.swing.JPasswordField;
import javax.swing.JTextPane;
import javax.swing.JButton;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JMenuBar;
import javax.swing.JOptionPane;



public class Login_frame extends JFrame {
	
   
  //Variablen 
  private JPanel contentPane;
  private JPasswordField txtpassword;
  ImageIcon icon;

  static Login_frame frame;
  static boolean access=false,access1=false;
  static int falsepwcounter=4,counter=0,usercounter=1;
  static String newuser;
  static int newpassword;
  
  

 


  public static void main(String[] args) {
	 
	  Benutzer.user[0]="Dennis";
	  Benutzer.password[0]=1337;
	  //Zum Testen, später aus datei laden
	  for(int i = 0; i<Benutzer.user.length; i++){
		  Benutzer.user[i]="leer";
	  }
    EventQueue.invokeLater(new Runnable() {
      public void run() {
    	counter=0;  
        try {
          frame = new Login_frame();
          frame.setLocationRelativeTo(null);
          frame.setTitle("Mini ERP - Login");
          frame.setVisible(true);
     
        } catch (Exception e) {
          e.printStackTrace();
        }
        
      }
    });
  }

  /**
   * Frame
   */
  public Login_frame() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(null);
    
    
    
    JLabel lblLoginBereich = new JLabel("Snackalicious Login");
    lblLoginBereich.setFont(new Font("Yaquote Script Personal Use", Font.PLAIN, 45));
    lblLoginBereich.setIcon(null);
    lblLoginBereich.setToolTipText("");
    lblLoginBereich.setBounds(99, 0, 325, 83);
    contentPane.add(lblLoginBereich);
    
    final JTextArea txtuser = new JTextArea();
    txtuser.setBounds(237, 72, 74, 22);
    contentPane.add(txtuser);
    
    txtpassword = new JPasswordField();
    txtpassword.setBounds(237, 105, 74, 20);
    contentPane.add(txtpassword);
    
    JLabel lblBenutzer = new JLabel("Benutzer:");
    lblBenutzer.setToolTipText("");
    lblBenutzer.setFont(new Font("Arial Black", Font.PLAIN, 13));
    lblBenutzer.setBounds(99, 71, 75, 22);
    contentPane.add(lblBenutzer);
    
    JLabel lblPasswort = new JLabel("Passwort:");
    lblPasswort.setToolTipText("");
    lblPasswort.setFont(new Font("Arial Black", Font.PLAIN, 13));
    lblPasswort.setBounds(99, 102, 75, 22);
    contentPane.add(lblPasswort);
    
    JButton btnLogin = new JButton("Login");
    btnLogin.addActionListener(new ActionListener() {
      @SuppressWarnings("deprecation")
	public void actionPerformed(ActionEvent arg0) { 
    	  counter=0;
    	  do {  
    	  if (txtuser.getText().equals(Benutzer.user[counter]) && Integer.parseInt(txtpassword.getText())==Benutzer.password[counter]) {
    	  access=true;
          JOptionPane.showMessageDialog(null,"Herzlich willkommen "+Benutzer.user[counter], "Anmeldung erfolgreich!",1 );
          menu.main(null);
          frame.dispose();
          }
    	  
          if (counter==Benutzer.user.length-1){
          JOptionPane.showMessageDialog(null,"Benutzername oder Passwort falsch!\n Noch "+(falsepwcounter-1)+" Versuche verbleibend!", "Error!", 1);
          falsepwcounter--;
          frame.setVisible(false);
          Login_frame.main(null);
          }
          
          if (falsepwcounter==0){
          System.exit(0);
          }
          counter++;
    	  }while(access==false && counter<100);
      }

	
    });
    btnLogin.setBounds(236, 136, 75, 23);
    contentPane.add(btnLogin);
    

    
    JLabel lblNewLabel = new JLabel("by Dennis Dierkes");
	lblNewLabel.setFont(new Font("Yaquote Script Personal Use", Font.PLAIN, 30));
	lblNewLabel.setBounds(285, 225, 174, 40);
	contentPane.add(lblNewLabel);
	
	JButton btnNeuerBenutzer = new JButton("Neuer Benutzer");
	btnNeuerBenutzer.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent arg0) {
			int i = 0;
			for(String s : Benutzer.user){
				if(Benutzer.user[i] == null){
					Benutzer.user[i]=JOptionPane.showInputDialog(null, "Wählen Sie Ihren Benutzernamen: ", "Registration", 1);
					if (Benutzer.user[i].trim().length()==0 || Benutzer.user[i]== null ) {	
						JOptionPane.showMessageDialog(null,"Sie müssen mindestens 2 Zeichen eingeben!","Error",1);
						
					}else {
						Benutzer.password[i]=  (int)((Math.random()) * 9999 + 1);
						JOptionPane.showMessageDialog(null, "Der Benutzer "+Benutzer.user[i]+" wurde erstellt und das Passwort "+Benutzer.password[i]+" generiert. \n                                              Viel Erfolg!", "Registration", 1);
						JOptionPane.showMessageDialog(null, Benutzer.user[0]+Benutzer.user[1]+Benutzer.user[2]+Benutzer.user[3]);
						break;
					}
					i++;
				}
			
				
				
				}
			
		}
	});
	btnNeuerBenutzer.setBounds(99, 136, 127, 23);
	contentPane.add(btnNeuerBenutzer);
    
  }
}

Java:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.sql.Timestamp;
import java.text.*;


public class Benutzer {
	static int[]password = new int[100];
    
	static int[] worktime=new int[100];
	static int[] sells=new int[100];
	static String[] user = new String[100];
	static double[] earned=new double[100];	
 }
 

Harry Kane

Top Contributor
Ich habe mit den Code mal genauer angeschaut.
Offenbar geht es um den Code, der im ActionListener des JButtons "Neuer Benutzer" steht.
So wie der Code da steht, dürfte gar nix sinnvolles passieren:
1. Du gehst über alle Benutzer, verwendest due Schleifenbariable s aber gar nicht.
2. In jedem Schleifendurchgang überprüfst du, ob Benutzer == null ist. Diese Bedingung ist aber nie erfüllt, weil Benutzer.user[0] gleich "Dennis" ist und alle weiteren "leer". Deshalb erspare ich mir eine Diskussion der Dinge, die in der Schleife passieren.
Wenn du deinen Code laufen lässt: wird bei Klick auf den "Neuer Benutzer" ein Dialog angezeigt?
Entweder mein Verständnis von dem Code ist falsch, oder deine Fehlerbeschreibung "jedoch überschreibt er immernoch jedes mal den ersten Platz(Array Feld)" sehr irreführend.

Wie ich so eine Schleife aufsetzen würde:
Java:
for(int i = 0; i < Benutzer.user.length; i++){
    if(platzInBenutzer.user[i]IstVerfügbar){
        //Userdaten abfragen und eintragen
        //For-Schleife verlassen oder einen Abfragedialog anzeigen, ob ein weiterer User angelegt werden soll
    }
}
 

deen

Mitglied
Vielen Dank für eure Bemühungen. Einer meiner ersten Lösungsversuche war bereits richtig.
Ich weiß nicht warum, aber eclipse hat immer die alte .java Datei angezeigt, jedoch wurde das Programm in Java-Editor ohne Probleme ausgeführt.

Code sieht jetzt so aus:

Java:
	for(int i = 0; i < Benutzer.user.length; i++){
				if(Benutzer.user[i] == null){
					Benutzer.user[i]=JOptionPane.showInputDialog(null, "Wählen Sie Ihren Benutzernamen: ", "Registration", 1);
					if (Benutzer.user[i].trim().length()==0 || Benutzer.user[i]== null ) {	
						JOptionPane.showMessageDialog(null,"Sie müssen mindestens 2 Zeichen eingeben!","Error",1);
						
					}else {
						Benutzer.password[i]=  (int)((Math.random()) * 9999 + 1);
						JOptionPane.showMessageDialog(null, "Der Benutzer "+Benutzer.user[i]+" wurde erstellt und das Passwort "+Benutzer.password[i]+" generiert. \n                                              Viel Erfolg!", "Registration", 1);
						JOptionPane.showMessageDialog(null, Benutzer.user[0]+Benutzer.user[1]+Benutzer.user[2]+Benutzer.user[3]);
						break;
					}
					
				}
 

Harry Kane

Top Contributor
Vielen Dank für eure Bemühungen. Einer meiner ersten Lösungsversuche war bereits richtig.
Ich weiß nicht warum, aber eclipse hat immer die alte .java Datei angezeigt, jedoch wurde das Programm in Java-Editor ohne Probleme ausgeführt.
Sowas sollte natürlich unbedingt vermieden werden. Wenn der Code, der Probleme verursacht, und der Code, der gepostet wird, nicht identisch sind, zerbrechen sich Leute ihren Kopf vollkommen umsonst.
Zu deinem neuen Codeschnipsel: ist das Problem jetzt gelöst? Sofern deine main-methode noch mit der oben geposteten übereinstimmt, sollte nach wie vor beim Klick auf den "Neuer Benutzer" Button nix passieren, weil die Bedingung "Benutzer.user == null" nie erfüllt ist.
Ausserdem würde ich dich bitten, in Zukunft beim Posten von Code auf die Einrückungen zu achten.
So etwas
Java:
package mypackage;

/**
 *
 * @author Harry
 */
                public class Bla {
                                    public static void main(String[] args){
                                                if(args.length > 0){
                                                            for(String s: args){
                                                                                        JOptionPane.showMessageDialog(null,"Der Titel dieses Dialogs ist so lang, daß der Code nicht mehr ohne scrollen sichtbar ist","Information",1);                                                            }
                                                }

                                    }
                    }
macht keine Lust zu lesen.
 

arilou

Bekanntes Mitglied
[...]So etwas [...] macht keine Lust zu lesen.
Nun, der Benutzer hat auf die Einrückung geachtet - nur werden bei ihm Tabstops verwendet, die hier zu Blanks aufgelöst werden.
(Und zusätzlich hat er wohl eingestellt, dass ein Tabstop 2 Positionen/"Blanks" einrücken soll, und er verwendet immer 2 Tabs, um 4 "Blanks" einzurücken. Hießiger Editor expandiert die 2 Tabs dann in 2* 8 "Blanks"...)

Ähm, hallo, Moderator? Kann man hießigen Editor so umstellen, dass er aus Tabstops nicht 8, sondern nur 4 (oder noch besser 2) "Blanks" macht?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Inventar und Items auf ein 2D ArrayFeld einfügen Java Basics - Anfänger-Themen 2
M Leeres String Arrayfeld bearbeiten Java Basics - Anfänger-Themen 12
A Auf leeres arrayfeld prüfen Java Basics - Anfänger-Themen 5
P Gibt es einen anderen Weg um "{}" in IntelliJ zu schreiben? Java Basics - Anfänger-Themen 5
T code so schreiben das er von sich selber anpasst (code soll die anzahl aller bustaben bestimmen) Java Basics - Anfänger-Themen 16
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
M Test auf Exceptions schreiben Java Basics - Anfänger-Themen 11
F Wie kann ich eine Funktion schreiben, die nur in bestimmten Fällen einen Wert zurückgibt? Java Basics - Anfänger-Themen 5
HolyFUT JSON String in Java Object schreiben - Anführungszeichen rauskriegen? Java Basics - Anfänger-Themen 17
java-starter Erste Schritte Mit While Schleifen Programme schreiben Java Basics - Anfänger-Themen 4
berserkerdq2 Wo ist der SInn, dass man den Stream, den ich zum Schreiben nutze, outputstream nenne? Java Basics - Anfänger-Themen 5
viktor1 Methoden Methode schreiben static void readText (String filename) {...} zu WordHistogramSample.java Java Basics - Anfänger-Themen 13
D JAVA Programm schreiben Java Basics - Anfänger-Themen 46
S In Datei schreiben in Java? Java Basics - Anfänger-Themen 1
J Dateien lesen und schreiben Java Basics - Anfänger-Themen 5
berserkerdq2 IO Streams logfile erstellen und Sachen schreiben wie? Java Basics - Anfänger-Themen 2
M Text in Datei schreiben Java Basics - Anfänger-Themen 9
berserkerdq2 Wie würde man einen regulären Ausdruck in Java schreiben, der prüft, dass zwei bestimtme Zahlen nicht nebeneinadner sind? Java Basics - Anfänger-Themen 3
S Bot schreiben Java Basics - Anfänger-Themen 1
J Kann ich mein Programm so schreiben? Java Basics - Anfänger-Themen 4
C Brauche Hilfe beim Schreiben eines Programmes :/ Java Basics - Anfänger-Themen 1
C Brauche Hilfe um ein Programm zu schreiben Java Basics - Anfänger-Themen 8
C XML Datei schreiben Java Basics - Anfänger-Themen 14
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
T Methode schreiben, die einem Array ein Stringelement hinzufügt, wenn dieses noch nicht enthalten ist. Java Basics - Anfänger-Themen 6
T Inhalt aus TextField in Attribut einer Instanz schreiben Java Basics - Anfänger-Themen 5
NeoLexx Datenströme Lesen und Schreiben einer Textdatei Java Basics - Anfänger-Themen 2
B Inputstream in file schreiben? Java Basics - Anfänger-Themen 23
L Test-Methoden schreiben Java Basics - Anfänger-Themen 13
L x und y Koordinaten in ein Array schreiben Java Basics - Anfänger-Themen 7
J Programm schreiben Java Basics - Anfänger-Themen 5
G In Datei schreiben Java Basics - Anfänger-Themen 1
B Werte aus einem Unterprogramm in ein Array schreiben Java Basics - Anfänger-Themen 2
J Methode zur Ausgabe eines Dreiecks aus Sternen schreiben? Java Basics - Anfänger-Themen 2
J Methode selber schreiben Java Basics - Anfänger-Themen 5
M Plateau Prgramm schreiben Java Basics - Anfänger-Themen 2
G Programm schreiben: Zahl (n) eingeben, 1+1/n+2/n+3/n+....+n/n Java Basics - Anfänger-Themen 8
J String in Datei schreiben Java Basics - Anfänger-Themen 4
L Kleine Hilfe beim Schreiben eines Programmes benötigt :D Java Basics - Anfänger-Themen 40
J Lesen und schreiben in eine Datei(Anfänger- Dateizugriffe) Java Basics - Anfänger-Themen 3
S JSON Datei schreiben und lesen Java Basics - Anfänger-Themen 3
W Einfachen, ein beliebiges Zeichen oft erkennenden Regex Parser selber schreiben - wie vorgehen? Java Basics - Anfänger-Themen 12
B CSS Klassen in eine Liste schreiben Java Basics - Anfänger-Themen 4
H projekt 1 code schöner schreiben. Java Basics - Anfänger-Themen 25
O findRoot Methode schreiben in einem Intervall Java Basics - Anfänger-Themen 31
O Erste Schritte Eigene charAt(i) Methode schreiben Java Basics - Anfänger-Themen 10
X Arrays untereinander schreiben Java Basics - Anfänger-Themen 4
K Probleme beim Programm schreiben - Lesen von Dateiinhalten -zaehlen von Wörtern/ Buchstaben Java Basics - Anfänger-Themen 4
A Erste Schritte Bitte helfen sie mir diese Programm zu schreiben Java Basics - Anfänger-Themen 12
L Input/Output Konsole in Farben schreiben Java Basics - Anfänger-Themen 4
P Strings in String Array schreiben Java Basics - Anfänger-Themen 13
Y kann jemand die Terme mit Zahlen schreiben ?? Java Basics - Anfänger-Themen 4
L Input/Output In Farben schreiben Java Basics - Anfänger-Themen 3
x-tshainge In gespeicherter Datei schreiben? Java Basics - Anfänger-Themen 7
F Schreibprogramm nur markierten Text in kursiv oder fett schreiben Java Basics - Anfänger-Themen 3
A JSON Lesen und Schreiben. Java Basics - Anfänger-Themen 3
L Eigene Exception schreiben bei zu langem Array Java Basics - Anfänger-Themen 10
karlmasutra Ausgabe in ein Array schreiben Java Basics - Anfänger-Themen 14
T Zufällige Matrix in neue Matrix schreiben Java Basics - Anfänger-Themen 6
F Mehrere Zeilen zu einer Zeile zusammenfügen und in eine Datei schreiben Java Basics - Anfänger-Themen 1
J Mit JSF Formular in Datenbank schreiben Java Basics - Anfänger-Themen 3
amazinglife77 Input/Output Lesen/Schreiben Properties: in eclipse geht, als JAR nicht Java Basics - Anfänger-Themen 4
S Wie muss ich die Generische Methode schreiben? Java Basics - Anfänger-Themen 6
R Input/Output Dateinamen aus Verzeichnis in Datei schreiben Java Basics - Anfänger-Themen 3
E Wert in Textfeld schreiben Java Basics - Anfänger-Themen 1
P Erste Schritte Schreiben in eine Datei Java Basics - Anfänger-Themen 9
M Java Roboter schreiben mit Eclipse Java Basics - Anfänger-Themen 3
J Probleme beim schreiben von Dateien Java Basics - Anfänger-Themen 5
M Rekursion schreiben Java Basics - Anfänger-Themen 16
M In einer Datei schreiben - Java Java Basics - Anfänger-Themen 3
D Eine einfache Verschlüsselung schreiben Java Basics - Anfänger-Themen 3
X Streams und Ausgabe - lässt sich das einfacher schreiben oder schöner schreiben? Java Basics - Anfänger-Themen 5
T Erste Schritte Schreiben Sie eine Klasse Zeit, die eine Zeitdauer in Minuten beschreibt. Die Anzahl Minuten verwalt Java Basics - Anfänger-Themen 3
G Java Objektorientiert schreiben Java Basics - Anfänger-Themen 1
D Daten mit Apache POI in eine Excel Datei schreiben Java Basics - Anfänger-Themen 5
N Lambda Ausdrücke richtig schreiben Java Basics - Anfänger-Themen 4
B Schreiben von zu vielen Einträgen in einer Datenbank Java Basics - Anfänger-Themen 9
F Wert in Linux auf die Konsole schreiben Java Basics - Anfänger-Themen 3
A von ArrayList in Labels schreiben Java Basics - Anfänger-Themen 19
X Kann man post increment "vollständig schreiben"? Java Basics - Anfänger-Themen 13
T Klassen In Eingabefeld von externem Programm schreiben wenn angewählt. Java Basics - Anfänger-Themen 6
X Dateien direkt hintereinander schreiben, Dateiname Java Basics - Anfänger-Themen 25
G Messwerte in 2 Dateien schreiben Java Basics - Anfänger-Themen 20
I Input/Output 3 Werte in Datei schreiben, duplikate vermeiden Java Basics - Anfänger-Themen 4
H Integer in Datei schreiben Java Basics - Anfänger-Themen 2
W Java in "Terminal" schreiben Java Basics - Anfänger-Themen 9
D Datentypen StringToFloat-Methode schreiben Java Basics - Anfänger-Themen 0
P Telefontarif Programm schreiben Java Basics - Anfänger-Themen 5
L Methode schreiben die den maximalen Wert im Array ermittelt Java Basics - Anfänger-Themen 27
M Best Practice Wann eine Methode schreiben ? Java Basics - Anfänger-Themen 14
S Komma geht beim Schreiben ins csv verloren. Java Basics - Anfänger-Themen 6
F Input/Output Dateien lesen/schreiben Java Basics - Anfänger-Themen 1
O Bubblesort allgemeiner schreiben Java Basics - Anfänger-Themen 5
B Probleme bei "Daten in CSV File schreiben". Java Basics - Anfänger-Themen 9
R Button soll Wert 1 in Variable schreiben Java Basics - Anfänger-Themen 4
D spaltenweise Arrays in eine csv schreiben Java Basics - Anfänger-Themen 3
K Thread - Methoden in die run Methode Schreiben Java Basics - Anfänger-Themen 5
M Erste Schritte Java Applet - HTML Seiten auslesen und in Access Datenbank schreiben? Java Basics - Anfänger-Themen 15
P Objekt Cache schreiben? Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben