Umkehrung des Arrays

Shaker1337

Mitglied
Ich habe ein sehr große Problem und zwar neigt sich das Schuljahr langsam dem Ende zu und ich stehe in Informatik auf 5 ;( . Um von meiner Note runterzukommen, habe ich mit meinem Lehrer gesprochen und dieser meinte die einzige Möglichkeit wäre, dass ich ein zu unserem aktuellen Thema etwas programmiere.
Also habe ich mir eine Aufgabe geben lassen und mich sofort rangesetzt. Das Problem ist, dass ich recht große Lücken habe und kaum etwas auf die Beine bekomme. Auch meine Freunde können mir nicht wirklich weiterhelfen, da sie auch größtenteils keine Ahnung haben. Ihr seid meine letzte Rettung bitte helft mir :(
Hier die Aufgabe: Entwickeln sie ein Programm, bei dem es möglich ist 10 Namen nach und nach einzulesen. In einem Array aus Strings sollen diese Namen durch betätigen eine Knopfes eingefügt werden. Anschließend soll das Array umgekehrt werden und dann der Inhalt einer bestimmten Stelle ausgegeben werden. Gebe ich beispielsweise die Ziffer 4 ein, so wird der Name der aks 5. letztes eingefügt wurde ausgegeben.
Bitte, bitte helft mir ;)
 

Haave

Top Contributor
Die 5 1/2 Phasen beim Erschleichen von Lösungen für Aufgaben
Phase 4 ;)

Aber ich gebe dir einen Tipp zum Vorgehen:
- Mach ein Array für 10 Elemente und fülle (z.B. mithilfe einer Schleife) jede Position mit einem Namen (die Eingabe kann z.B. durch einen
Java:
BufferedReader
erfolgen (Klick auf den Namen für mehr Informationen dazu).
- Das Umkehren des Arrays kannst du dir sparen, wenn du jeden Namen sofort bei der Eingabe an die Position übergibst, an der er später stehen soll. Wird also der erste Name eingegeben, setzt du ihn an die 10. Stelle des Arrays. Auf diese Weise brauchst du kein zweites Array.
- Der Rest sollte dann kein Problem sein :)

Ergänzung:
Deine Schleife könnte beispielsweise so aussehen:
Java:
for(int i = 9; i != -1; i--) {
	//dein Code hier :)
}
 
Zuletzt bearbeitet:

Schrubber

Bekanntes Mitglied
Oder mach dein Postfach frei / sag mir wie ich dir schreiben kann. Hab hier paar Hilfeseiten, wo du dich durchlesen musst, damit das relativ einfach geht und auch einige Denkanstöße, die dir den Weg zeigen / dir alles erleichtern.



Schrubber
 

headset

Mitglied
Wenn du ne Array umdrehen möchtest, erstell doch einfach ne zweite und füg die Namen in der umgedrehten reihnfolge ein. Ist zwar nicht die eleganteste Variante, sollte aber gehen
 

Landei

Top Contributor
Ein Array "drehen"?
Java:
String[] array = new String[]{"O","ich","bin","klug","und","weise","und","man","betrügt","mich","nicht"};
for(int i = 0; i < array.length / 2; i++) {
   String temp = array[i];
   array[i] = array[array.length-1-i];
   array[array.length-1-i] = temp;
}
 
S

SlaterB

Gast
schwieriger klingt da das Einlesen vom User + Aktion per 'Knopf',
GUI, Swing? Grundlagen bekannt?
 

Shaker1337

Mitglied
Aaaalso....ich hab mich dieses Wochenende das erstmal mal wirklich intensiv mit Java beschäftigt um die Aufgabe zu lösen, allerdings bin ich mir absolut nicht sicher, ob das, was rausgekommen ist, wirklich richtig sein soll. Ein weiteres Problem besteht darin, dass die Installations CD fehlerhaft ist, wo ich meine Lehrerin auch draufhingewießen habe, und deshalb kann ich das ganze nicht abspielen. Aber davon ab...die GUI steht und ich poste hier mal das was ich zum Array habe und hoffe ihr könnt mir sagen was ich falsch gemacht habe oder auch Tipps zur Verbesserung geben.

String cmd = event.getActionCommand();
String[] meinFeld = new String [10];
meinFeld=new String [10];
int i=1;
if(cmd.equals ("Eingabe"))
{
String eingabe = tfEingabe.getText();

i++;
}
else if (cmd.equals ("Auslesen"))
{
int a =tfEingabe1.getText().toInteger();
int ausgabe = 9-a;
tfAusgabe.setText(meinFeld[ausgabe]);
}
 
S

SlaterB

Gast
test doch deine Anwendung, ob sie alle Anforderungen erfüllt,
an Schönheit musst du im Moment noch nicht denken,

wenn du nicht testen kannst, oder was immer du mit 'Installations CD fehlerhaft' meinst,
dann siehts ja ganz düster aus, so kann man doch nicht arbeiten,

Java gibts auch im Internet zu laden
 

Landei

Top Contributor
Wenn du keine IDE hast, hole dir hier die Java-SE Version von NetBeans. Ganz einfach: Neues Java-Projekt anlegen (den Namen deiner Klasse als Startklasse angeben), deinen Code reinkopieren, dann sollte es "einfach so" laufen.

Zum Code:

Was soll das i sein?

Wenn tfEingabe1.getText() ein String ist, dann hat der keine Methode toInteger();
Einen String kann man z.B. mit Integer.parseInt(str) in ein Integer umwandeln.

Ansonsten: Mehr Code, mehr Formatierung, mehr [JAVA]-Tags.
 

Jango

Gesperrter Benutzer
Aaaalso....ich hab mich dieses Wochenende das erstmal mal wirklich intensiv mit Java beschäftigt um die Aufgabe zu lösen...

Respekt! Du fängst an zu lernen, nachdem du in Informatik auf 5 stehst und deinen Lehrer gebeten hast, dir ne Aufgabe zu geben, um die Note zu verbessern? Auch erst nachdem dir hier keiner ne Lösung auf nem Silbertablett serviert?

Ich habe ein sehr große Problem und zwar neigt sich das Schuljahr langsam dem Ende zu und ich stehe in Informatik auf 5...

Ich denke mal, zum Schuljahresende wird's ne 6? Selbst schuld.

Dein Code: Immerhin der Code einer objektorientierten Hochsprache. Gib ihm (deiner Aufgabe gerecht) einen Sinn und alles wird gut.

Mein Tip: lernen, lernen und nochmals lernen. ;)
 
S

SlaterB

Gast
gibt es irgendeinen Grund für diese witz- und inhaltslose gemeine Hetzrede eine Woche später?
 

tuttle64

Bekanntes Mitglied
ich habe auf die schnelle etwas codiert. führe den code aus, damit du das verhalten siehst. bei fragen nur zu...

Code:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class NameReader extends JFrame implements ActionListener {
	
	private static final long serialVersionUID = 1L;
	private int count = 0;
	// Die Anzahl einzulesender Namen kann mit max parametrisiert werden
	private int max = 10;
	private String[] namen = new String[max];
	private JTextField nameField = new JTextField(20);
	private JLabel text = new JLabel("Bitte Name eingeben:");
	private JLabel anz = new JLabel("Anzahl Namen: " + count);
	private JButton add = new JButton("hinzufügen");
	private JPanel north = new JPanel();
	private JPanel center = new JPanel();
	private JPanel south = new JPanel();
	private JOptionPane optionPane;

	public NameReader(String titel) {
		super(titel);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);

		add.addActionListener(this);
		// Layout the components
		north.add(anz);
		center.add(text);
		center.add(nameField);
		south.add(add);

		Container contentPane = getContentPane();

		contentPane.add(north, BorderLayout.NORTH);
		contentPane.add(center, BorderLayout.CENTER);
		contentPane.add(south, BorderLayout.SOUTH);
	}

	public void actionPerformed(ActionEvent e) {
		String str = e.getActionCommand();

		if (str.equals("hinzufügen")) {
			namen[count] = nameField.getText();
			count++;
			anz.setText("Anzahl Namen: " + count);
			nameField.setText("");

			// Namen umkehren,, sobald die max. Anzahl erreicht ist
			if (count == max) {

				this.dispose();
				for (int i = 0; i < namen.length / 2; i++) {
					String temp = namen[i];
					namen[i] = namen[namen.length - 1 - i];
					namen[namen.length - 1 - i] = temp;
				}

				optionPane = new JOptionPane("Welches Element",
						JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_OPTION);

				JTextField tf = new JTextField(10);

				String s = JOptionPane.showInputDialog(null,
						"Welches Element? ", "", 1);

				if (s != null) {
					JOptionPane.showMessageDialog(null, "Das Element " + s
							+ " lautet:" + namen[Integer.parseInt(s)], "", 1);
				}
			}

		}
	}

	public static void main(String[] args) {
		NameReader nr = new NameReader("Namen einlesen");
		nr.pack();
		nr.setVisible(true);
	}

}
 

Neue Themen


Oben