# Umkehrung des Arrays



## Shaker1337 (21. Jun 2010)

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 (21. Jun 2010)

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 
	
	
	
	





```
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:

```
for(int i = 9; i != -1; i--) {
	//dein Code hier :)
}
```


----------



## Final_Striker (21. Jun 2010)

Shaker1337 hat gesagt.:


> Also habe ich mir eine Aufgabe geben lassen und mich sofort rangesetzt.



Ja, dann zeig doch mal her was du bis jetzt so gemacht hast.


----------



## Schrubber (28. Jun 2010)

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


----------



## Shaker1337 (1. Jul 2010)

Am besten erreichst du mich unter Skype:   Shak3r   oder meine e-mail:
janrue@gmx.de
danke schonmal im voraus und an alle anderen die was hilfreiches gepostet haben


----------



## headset (1. Jul 2010)

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


----------



## Shaker1337 (2. Jul 2010)

könnten ihr mir vllt. die wichtigsten befehle nennen die ich brauche um das programm zu schreiben?


----------



## Landei (2. Jul 2010)

Ein Array "drehen"?

```
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;
}
```


----------



## SlaterB (2. Jul 2010)

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


----------



## Shaker1337 (3. Jul 2010)

danke erstmal für eure hilfe...hab aber noch eine weitere frage und zwar: wie liest man ein array aus?


----------



## Jango (3. Jul 2010)

Shaker1337 hat gesagt.:


> danke erstmal für eure hilfe...hab aber noch eine weitere frage und zwar: wie liest man ein array aus?



Mit einer Schleife.


----------



## Final_Striker (3. Jul 2010)

Shaker1337 hat gesagt.:


> danke erstmal für eure hilfe...hab aber noch eine weitere frage und zwar: wie liest man ein array aus?



lesen ;-)
Java ist auch eine Insel – 3.8 Arrays


----------



## Shaker1337 (4. Jul 2010)

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]);
}


----------



## SlaterB (5. Jul 2010)

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 (5. Jul 2010)

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 (9. Jul 2010)

Shaker1337 hat gesagt.:


> 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?



Shaker1337 hat gesagt.:


> 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.


----------



## SlaterB (9. Jul 2010)

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


----------



## Jango (9. Jul 2010)

SlaterB hat gesagt.:


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



Nö...


----------



## tuttle64 (12. Jul 2010)

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


```
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);
	}

}
```


----------



## kuku (10. Aug 2010)

Die Collections Klasse bietet eine reverse Funktion, welches vermutlich der einfachste Weg ist das Array "umzukehren".


----------

