Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Array verwalten

Empfohlene Antworten

Ich möchte eine Klasse, die dem Zweck dient zwei Arrays zu füllen (die beiden Werte gehören zusammen).

Es soll sich also ein Fenster öffnen mit zwei Textfeldern in denen die Werte geschrieben werden können. Zwei Buttons um im Array nach vorne bzw nach hinten im Array gesprungen wird. Und ein Textfeld um direkt auf eine Position im Array zu gelangen.

Das größe des Arrays ist unbekannt und soll sich zur Laufzeit ändern (größer bzw. kleiner werden). Ich habe es schon mit ArrayList probiert, aber funktioniert hat das gar nicht. Hat jemand vielleicht irgendein kleines Programm was etwas ähnliches macht?

dann schau dir mal die klasse java.util.vector an.

die sieht sehr passend dafür aus.

was hast du denn bis jetzt gecodet? wir machen nur ungern die hausaufgaben von berufsschülern ;).

gib uns code [oder mehr von deinen gedankengängen] und wir helfen!

bigredeyes

Servus,

ich würde im Gegensatz zu bigredeyes eher bei der ArrayList bleiben. Der Vector ist veraltet und nicht wirklich performant (dafür aber komplett synchronisiert, glaube ich). Diese Diskussion wird zur Genüge in den Sun Foren geführt.

Aber ich schließe mich bigredeyes auch an: Geht nicht ist kein Fehler, was ist Dein Ansatz und wo genau klappt was genau nicht.

Peter

sind keine Hausaufgaben, zumindest nicht im eigentlichen Sinne... Soll von meinen Betrieb aus, mich mal mit OOP beschäftigen, kämpfe daher seid Montag mit Java...

Ich habe schon mein Fenster mit den Feldern und den Buttons. Die beiden Textfelder speicher ich in einer ArrayList.

Wenn ich den ersten Wert eintippe und dann auf den Button für weiter gehe, sehe ich dann mein eingetipptes (außer meinen letzten Buchstaben). Ich schätze mal das liegt daran das ich bei jedem Tippen das einfüge, statt zu überschreiben. Ich dachte ich hätte vielleicht Glück und das Add Statement fügt ein wenn ich dem Index mit gebe...

Muss ich jetzt jedes mal meinen Eintrag aus der List löschen und den neuen Hinzufügen oder gibt es dafür besser Lösungen?

Hier einfach mal ein Teil des Codes:

public void caretUpdate(CaretEvent event)

{

if (upd == 0)

{

AVar.add(IndAkt,tfAVar.getText());

Wcodes.add(IndAkt,tfWcodes.getText());

IndMax = Wcodes.size();

tfIndMax.setText(String.valueOf(IndAkt));

}

}

public void actionPerformed(ActionEvent event)

{

upd = 1;

for (int i = 1;i < 13;i++)

{

System.out.println(i+": "+AVar.get(i)+" - "+Wcodes.get(i));

}

String cmd = event.getActionCommand();

if(cmd == ">")

{

if(IndAkt <= IndMax)

{

IndAkt++;

}

}

if (cmd == "<")

{

if(IndAkt > 1)

{

IndAkt--;

}

}

if (IndAkt <= IndMax)

{

tfAVar.setText(AVar.get(IndAkt));

tfWcodes.setText(Wcodes.get(IndAkt));

}

else

{

tfAVar.setText("");

tfWcodes.setText("");

}

tfIndAkt.setText(String.valueOf(IndAkt));

upd = 0;

}

Sorry, ich verstehe Deine Frage nicht.

Könntest Du Deinen Code bitte in Code-Tags packen, Deine Frage noch mal neu formulieren und Dich auf einen bestimmten Code-Abschnitt beziehen? Einen Fehler zu analysieren, der aus der Benutzersicht geschildert wird, ist mir zu mühsam. Sag, an welcher Stelle im Code Du was erwartest und was Du bekommst, dann kommen wir weiter.

Peter

AVar.add(IndAkt,tfAVar.getText());

Das ist glaub ich die Zeile bei der ich mein Problem habe. AVar ist eine ArrayList. Ich habe mittlerweile rausgefunden das der Befehl immer ein neues Element hinzufügt und nicht das Alte überschreibt. Ich möchte aber das das Alte überschrieben wird, weil das Statement im "caretUpdate" drin ist und bei jedem Buchstaben aufs Neue aufgerufen wird.

Hier aber mal der aktuelle Stand:


import javax.swing.*;

import java.awt.event.*;

import java.awt.*;

import javax.swing.event.*;

import java.util.Properties;

import java.util.ArrayList;

import java.util.Iterator;

import java.io.FileInputStream;

import java.io.InputStreamReader;

import java.io.BufferedReader;


public class PKONV0003

extends JFrame

implements ActionListener, CaretListener

{


   private JTextField tfWcodes = new JTextField(25);

   private JTextField tfAVar = new JTextField(5);

   private JTextField tfIndAkt = new JTextField(2);

   private JTextField tfIndMax = new JTextField(2);

   private JButton btnVor = new JButton(">");

   private JButton btnZurueck = new JButton("<");


   private static int IndMax = 1;                                                       

   private static int IndAkt = 1;

   private static int upd = 0;


   private ArrayList<String> AVar = new ArrayList<String>();

   private ArrayList<String> Wcodes = new ArrayList<String>();


   private static PKONV0003 wnd = new PKONV0003();


   public PKONV0003()

   {

      super("Eingabe der Werbecodes");


      Container contentPane = getContentPane();

      contentPane.setLayout(new GridLayout(3,1));


// Zeile 1:


      JPanel zeile1 = new JPanel();

      zeile1.setLayout(new GridLayout(1,2));


      JLabel lblAVar = new JLabel(

            "  Ausgabevariante:",

            SwingConstants.LEFT

            );

      zeile1.add(lblAVar);

      tfAVar.addCaretListener(this);

      tfWcodes.setToolTipText("Eingabe der Ausgabevariante");

      zeile1.add(tfAVar);            


      zeile1.setBorder(BorderFactory.createEtchedBorder());

      contentPane.add(zeile1);


// Zeile 2:


      JPanel zeile2 = new JPanel();

      zeile2.setLayout(new GridLayout(1,2));


      JLabel lblWcodes = new JLabel(

            "  Werbecodes:",

            SwingConstants.LEFT

            );   

      zeile2.add(lblWcodes);

      tfWcodes.addCaretListener(this);

      tfWcodes.setToolTipText("Eingabe der Werbecodes");

      zeile2.add(tfWcodes);


      zeile2.setBorder(BorderFactory.createEtchedBorder());

      contentPane.add(zeile2);


// Zeile 3:


      JPanel zeile3 = new JPanel();

      zeile3.setLayout(new FlowLayout());


      btnZurueck.setToolTipText("Zurück");

      btnZurueck.addActionListener(this);

      zeile3.add(btnZurueck);


      tfIndAkt.setToolTipText("Springe zu...");

      tfIndAkt.addActionListener(this);

      tfIndAkt.setText("1");

      zeile3.add(tfIndAkt);


      JLabel lblFlash = new JLabel(

            "  /",

            SwingConstants.LEFT

            );   

      zeile3.add(lblFlash);


      tfIndMax.setEditable(false);

      tfIndMax.setText("1");

      zeile3.add(tfIndMax);


      btnVor.setToolTipText("Vor");

      btnVor.addActionListener(this);

      zeile3.add(btnVor);


      zeile3.setBorder(BorderFactory.createEtchedBorder());

      getContentPane().add(zeile3);


      AVar.add(0," ");

      Wcodes.add(0," ");      

   }


   public void caretUpdate(CaretEvent event)

   {


      if (upd == 0)

      {

          AVar.add(IndAkt,tfAVar.getText());

          Wcodes.add(IndAkt,tfWcodes.getText());


         System.out.println(IndAkt+": "+AVar.get(IndAkt)+" - "+Wcodes.get(IndAkt)+" - *");


         IndMax = Wcodes.size();   

         tfIndMax.setText(String.valueOf(IndAkt));

      }

   }


   public void actionPerformed(ActionEvent event)

   {

      upd = 1;



      String cmd = event.getActionCommand();

//      System.out.println(cmd);


      if(cmd == ">")

      {

         if(IndAkt <= IndMax)

         {

            IndAkt++;

         }

      }

      if (cmd == "<")

      {

         if(IndAkt > 1)

         {

            IndAkt--;

         }

      }

      System.out.println(IndAkt+" - "+IndMax);


      if (IndAkt <= IndMax)

      {       

          tfAVar.setText(AVar.get(IndAkt));

          tfWcodes.setText(Wcodes.get(IndAkt));

      }

      else

      {

         tfAVar.setText("");

         tfWcodes.setText("");

      }


      tfIndAkt.setText(String.valueOf(IndAkt));


      upd = 0;

   }


   public void zeige(String plaf)

   {   

         wnd.setResizable(false);

    	 wnd.setLocation(400,250);

     	 wnd.setSize(350   ,115);

         wnd.setVisible(true);            

   }


   public static void main(String[] args)

   {

   }

} 

Servus,

super, das ist eine gut gestellte Frage gewesen.

Du suchst wahrscheinlich die Methode set(int index, E element) aus der Klasse java.util.ArrayList.

Schau Dir doch bitte mal die Java API Doc für diese Klasse an, dann findest Du zwei Dinge raus:

1. was die Methode macht, die ich Dir gesagt habe

2. das die API Doc eines der wichtigsten Werkzeuge für Entwickler ist

Schöne Grüße,

Peter

ich habe auf der Seite:

Referenz: java.util.ArrayList

geguckt...

... und die Methode total übersehen, danke das müsste genau die sein die ich die ganze zeit am suchen bin...

Servus,

am besten arbeitest Du mit der originalen Java API Doc: Java 2 Platform SE 5.0

Da steht alles zur Standard Edition drin und wenn Du irgendwelche Frameworks verwendest, haben die meist auch eine solche Doku und Du findest Dich gut zurecht.

Peter

gut danke, ich werd dann wohl beide nutzen (Englisch gehört nicht gerade zu meinen stärken)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.