Ich arbeite gerade an einem programm welches die Namen welche in ein Textfeld eingegeben wurden in einem array speichern soll wenn die eingabe durch einenen Knopf bestätigt wurde . Ist es möglich das der wert von i um eines erhöht wird so das der nächste name automatisch auf der zweiten index position gespeichert wird ?
Java:
String[] names =newString[5];int i =0;ActionListener al =newActionListener(){@OverridepublicvoidactionPerformed(ActionEvent e){// TODO Auto-generated method stubif(e.getSource()==Speichern){
names[i]=Name.getText();}}};Show.addActionListener(al);Speichern.addActionListener(al);
Erstmal die obligatorische Bitte: halte Dich an die Benennungskonventionen von Java, d. h. Bezeichner für Variablen, Parameter und Methoden in lowerCamelCase und für Typen (Klassen & Co.) in UpperCamelCase. Dein Code ist ansonsten schwer zu lesen bzw. missverständlich (Name.getText() deutet z. B. auf eine Klasse mit einer statischen Methoden getText hin, obwohl es vermutlich einfach nur eine Variable vom Typ JTextField ist).
Dann: stehen die Namen denn in einem Textfeld oder in mehreren?
i erhöhen geht einfach mit i++ oder i+=1 oder i = i+1 - such Dir eins aus
Die Namen sollen einzelnd in ein Textfeld eingetragen werden
An welche stelle kann das i++ gesetzt wenn ich es unter die Zeile mit Name.getText wird mir der fehler : Local variable i defined in an enclosing scope must be final or effectively final angezeigt
Die Namen sollen einzelnd in ein Textfeld eingetragen werden
An welche stelle kann das i++ gesetzt wenn ich es unter die Zeile mit Name.getText wird mir der fehler : Local variable i defined in an enclosing scope must be final or effectively final angezeigt
Die Variable i ist eine lokale Variable und lokale Variablen, die man in einer inner class verwendet, dürfen nicht verändert werden.
Wieso nutzt Du keine Instanzvariablen? Es geht doch bei dem Array und der Variablen um Dinge, die Du generell haben willst und nicht nur lokal in einer Methode.
Und i solltest Du Dir einen sinnvollen Namen überlegen ....
Von seinem Code ausgehend ist es eher so, dass immer nur ein Name eingegeben wird, dann wird ein Button gedrückt und dann kann der nächste Name eingegeben werden ....
String [] names = new String[5];
int i = 0;
ActionListener al = new ActionListener () {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getSource()== Speichern) {
names[i++] = Name.getText();
}
if (e.getSource()==Show) {
System.out.print(names);
}
}
Nutze wird mir immer noch angezeigt : Local variable i defined in an enclosing scope must be final or effectively final
Stehe gerade glaube ich etwas auf dem schlauch