Methoden Vertauschen von 2 Werten eines Arrays

xyt4n

Aktives Mitglied
Guten Tag,

ich muss innerhalb 1-2 Wochen mir einige Java Grundlagen für den Anfang des Studiums aneignen.
Nun meine aktuelle Aufgabe ist 2 Werte von Arrays durch eine Methode zu vertauschen. Die Methode habe ich swap genannt. Ich habe 2 Fehlermeldungen, die ich mit Kommentaren markiert habe. Ich komme seit Stunden nicht mehr weiter,d eshalb wende ich mich mal an das Forum hier.

Bitte so einfach wie möglich erklären, wenn ich was grundlegendes falsch mache, da ich Java seit ca 5 Tagen kenn und es für mich z.Z. sehr schwer fällt neue Sachen in Java zu lernen.

Alles was vor Zeile 23 kommt ist in der Form richtig.

Java:
import java.util.Scanner;
class Array {
	public static void main (String args[]){

		int n, a, k, j;
		String wort;
		a=0;
		Scanner sc = new Scanner(System.in);
		n=sc.nextInt();
		int zahl[]= new int[n];
		
		System.out.println("Index\tWert");
		
		for (int i=0; i<n; i++)
		{zahl[i]=n-a; a++;}

		Array.printArray(zahl);

		System.out.println("Wollen sie 2 Werte vertauschen?");
		System.out.println("j/n");
		wort=sc.nextLine();

		if (wort=="j"){	
		System.out.println("Geben sie den ersten Index ein");
		k=sc.nextInt();
		System.out.println("Geben sie den zweiten Index ein");
		j=sc.nextInt();}
		
		Array.swap(zahl, k, j); //Fehlermeldung
		Array.printArray(zahl);
		}

			public static void printArray(int[] zahl){
			
			int i;
			for (i=0; i<zahl.length; i++)
			{System.out.println(i+"\t"+zahl[i]);}
}



		public static swap(int[] zahl, int k, int j){ //Fehlermeldung
			int x, y; 
			
			zahl[k]=x;
			zahl[j]=y;
			x=x+y;
			y=x-y;
			x=x-y;
			return zahl[k]=x;
			return zahl[j]=y;
			
			
		}
}
 

Final_Striker

Top Contributor
In deiner swap Methode ist kein Rückgabeltyp angegeben.
Man kann außerdem immer nur einen Wert zurückgeben.


Und schau dir nochmal an wie man Strings vergleicht.
 

xyt4n

Aktives Mitglied
In deiner swap Methode ist kein Rückgabeltyp angegeben.
Man kann außerdem immer nur einen Wert zurückgeben.


Und schau dir nochmal an wie man Strings vergleicht.

Okay, ich habe jetzt das hier geschrieben:

String ja;
ja="j";

if (wort==ja;)....

Es wäre ziemlich blöd, wenn man nur einen Wert rückgeben kann. Ich brauche ja eine Methode die 2 Werte vertauscht und dies dann im Array auch speichert. Wie kann ich denn diese Begrenzung umgehen?
Und wieso fehlt ein Rückgabetyp? Ich habe doch jeweils die Werte und den Datentyp in die Klammer hineingeschrieben.
 

Final_Striker

Top Contributor
Java:
String ja; 
ja="j";

if (wort==ja;)....
Nein, das ist praktisch identisch mit dem was du vorher stehen hattest und macht keinen Unterschied.

Es wäre ziemlich blöd, wenn man nur einen Wert rückgeben kann. Ich brauche ja eine Methode die 2 Werte vertauscht und dies dann im Array auch speichert. Wie kann ich denn diese Begrenzung umgehen?

Wenn du mehrere Werte zurückgeben willst kann man z.B ein Array nutzen das mehrere Werte enthält

Und wieso fehlt ein Rückgabetyp? Ich habe doch jeweils die Werte und den Datentyp in die Klammer hineingeschrieben.

Der Rückgabetyp steht vor der Methodenbezeichnung. Was du hier beschreibst sind die Parameter der Methode.
 

Mujahiddin

Top Contributor
Deine Methode ist falsch.

1. muss es
Code:
public static void
heißen wie FinalStriker bereits erwähnte,
2. Du musst in dieser Methode nichts zurückgeben, Arrays sind Objekte und wenn du Werte in diesem Array veränderst, dann wirkt sich das direkt auf das Ursprungsarray aus.
3. Du solltest wirklich grundlegende Grundlagen aneignen: Du deklarierst ein Feld und weist einem anderen Feld den Wert dieses Feldes zu, dabei hast du diesem Feld noch nichts zugewiesen.
Java:
int x, y;

array[k] = x; // x ist noch nicht deklariert
array[j] = y; // y ebenfalls!!!
 

xyt4n

Aktives Mitglied
Okay, danke! Ich hab jetzt geschafft das Programm auszuführen und es funktioniert auch fast. Das fast bezieht sich darauf, dass ich nur einmal was in der Konsole schreiben kann und nicht mehrmals.
Woran könnte das liegen? Das Problem tritt ab Zeile 21 auf.

Hier nochmal das bearbeitete Programm:

Java:
import java.util.Scanner;
class Array {
	public static void main (String args[]){

		int n, a;
		String wort;
		a=0;
		Scanner sc = new Scanner(System.in);
		n=sc.nextInt();
		int zahl[]= new int[n];
		
		System.out.println("Index\tWert");
		
		for (int i=0; i<n; i++)
		{zahl[i]=n-a; a++;}

		Array.printArray(zahl);

		System.out.println("Wollen sie 2 Werte vertauschen?");
		System.out.println("j/n");
		wort=sc.nextLine();
		if (wort.equals("j")){
		Array.swap(zahl);
		Array.printArray(zahl);}
		}

			public static void printArray(int[] zahl){
			
			int i;
			for (i=0; i<zahl.length; i++)
			{System.out.println(i+"\t"+zahl[i]);}
}

		public static void swap(int[] zahl){
			int x, y, k, j;
			
			Scanner sc = new Scanner(System.in);
			System.out.println("Geben sie den ersten Index ein");
			k=sc.nextInt();
			System.out.println("Geben sie den zweiten Index ein");
			j=sc.nextInt();
			
			x=zahl[k];
            y=zahl[j];
            x=x+y;
            y=x-y;
            x=x-y;
            zahl[k]=x;
            zahl[j]=y;
			
		}
}
 
H

hüteüberhüte

Gast
Funktioniert bei mir (
Code:
sc.nextLine();
vergessen):

Java:
import java.util.Scanner;

/**
 * @author hüte
 */
public class ArrayAction {

    public static void main(String args[]) {
        int n, a;
        String wort;
        a = 0;
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        sc.nextLine();
        int zahl[] = new int[n];

        System.out.println("Index\tWert");

        for (int i = 0; i < n; i++) {
            zahl[i] = n - a;
            a++;
        }

        printArray(zahl);

        do {
            System.out.println("Wollen sie 2 Werte vertauschen?");
            System.out.println("j/n");
            wort = sc.nextLine();
            if (wort.equals("j")) {
                swap(zahl);
                printArray(zahl);
            } else {
                break;
            }
        } while (true);
    }

    public static void printArray(int[] zahl) {
        for (int i = 0; i < zahl.length; i++) {
            System.out.println(i + "\t" + zahl[i]);
        }
    }

    public static void swap(int[] zahl) {
        int x, y, k, j;

        Scanner sc = new Scanner(System.in);
        System.out.println("Geben sie den ersten Index ein");
        k = sc.nextInt();
        System.out.println("Geben sie den zweiten Index ein");
        j = sc.nextInt();

        x = zahl[k];
        y = zahl[j];
        x = x + y;
        y = x - y;
        x = x - y;
        zahl[k] = x;
        zahl[j] = y;
    }
}
 

xyt4n

Aktives Mitglied
Warum soll sich das Programm von selbst wiederholen? Wenn du Codeabschnitte wiederholen willst, dann musst du Schleifen benutzen.

Du verstehst mich falsch. Ich brauch keine Schleifen.


Es geht darum das ich was ingeben möchte und er soll reagieren. Danach soll ich wieder etwas eingeben können und er soll reagieren.

Ich kann aber nur einmal was eingeben. Das ist das Problem.

Edit: Vielen Dank hüteüberhüte!
 
Zuletzt bearbeitet:
H

hüteüberhüte

Gast
Wenn die Eingabe ein int ist und danach Enter gedrückt wird, muss zusätzlich
Code:
sc.nextLine();
aufgerufen werden
 

xyt4n

Aktives Mitglied
Wenn die Eingabe ein int ist und danach Enter gedrückt wird, muss zusätzlich
Code:
sc.nextLine();
aufgerufen werden

Und wieso klappt das auch hier ohne dem Befehl:

Java:
System.out.println("Geben sie den ersten Index ein");
			k=sc.nextInt();
			System.out.println("Geben sie den zweiten Index ein");
			j=sc.nextInt();
 
H

hüteüberhüte

Gast
(5\n + nextInt) + nextLine = "" (im Buffer steht 5\n)

(5\n + nextInt) + (4\n + nextInt) = 4 (im Buffer steht 5\n4\n)

Blöd zu erklären, nimm lieber BufferedReader + Integer.parseInt(String s)

[EDIT]Danke für das Danke :toll: [/EDIT]
 

Mujahiddin

Top Contributor
(5\n + nextInt) + nextLine = "" (im Buffer steht 5\n)

(5\n + nextInt) + (4\n + nextInt) = 4 (im Buffer steht 5\n4\n)

Blöd zu erklären, nimm lieber BufferedReader + Integer.parseInt(String s)

[EDIT]Danke für das Danke :toll: [/EDIT]

Ich finde diese Konsolenanwendungen wirklich... naja.
Die static Methoden von JOptionPane bieten wirklich so viele Sachen, dass man gänzlich auf System.in verzichten kann.
Also ich sehe keinen Grund, nicht JOptionPane.showInputDialog("Index 1"); statt
Code:
System.out.print("Index 1: "); read(System.in);
zu machen
 
H

hüteüberhüte

Gast
Gerade für den Anfang ist das Arbeiten mit Streams wichtig. JOptionPane ist eher ein Mogelpackung. Bevor man sie benutzt, sollte man mit Streams vertraut sein. Am besten ist es, wenn man mit BufferedReader beginnt
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Y und Z vertauschen Java Basics - Anfänger-Themen 4
J Array vertauschen ohne ein neues anzulegen?! Java Basics - Anfänger-Themen 10
G Linked list, Methode zum Vertauschen von Elementen Java Basics - Anfänger-Themen 14
J Inhalte von zwei Arrays vertauschen?! Java Basics - Anfänger-Themen 6
F Buchstaben in einem String vertauschen (Ohne replace) Java Basics - Anfänger-Themen 10
scratchy1 Variablen vertauschen wenn Bedingung "umgedreht" wird Java Basics - Anfänger-Themen 40
C Arraywerte random vertauschen Java Basics - Anfänger-Themen 2
H Array vertauschen von 2 Elementen Java Basics - Anfänger-Themen 3
S Array Werte vertauschen Java Basics - Anfänger-Themen 2
C Array Elemente Paarweise vertauschen Java Basics - Anfänger-Themen 2
B Arrays in Reihenfolge vertauschen Java Basics - Anfänger-Themen 6
K Datentypen Werte im Array vertauschen Java Basics - Anfänger-Themen 11
L Methoden Methode Parameter vertauschen? Java Basics - Anfänger-Themen 3
L Java Strings Buchstaben vertauschen Java Basics - Anfänger-Themen 4
G . und , vertauschen Java Basics - Anfänger-Themen 3
P zwei werte vertauschen Java Basics - Anfänger-Themen 9
K Character in Wörtern vertauschen Java Basics - Anfänger-Themen 11
C Zeichen vertauschen Java Basics - Anfänger-Themen 35
T Buttons (auf denen bilder sind) random vertauschen Java Basics - Anfänger-Themen 11
F Datentypen Zufällige Buchstaben vertauschen Java Basics - Anfänger-Themen 3
S String Elemente bzw. Buchstaben miteinander vertauschen? Java Basics - Anfänger-Themen 6
F Hilfe! JList Inhalte vertauschen Java Basics - Anfänger-Themen 2
G Objekte in ArrayList vertauschen :( Java Basics - Anfänger-Themen 13
J Array - Vertauschen Problem mit char/int Java Basics - Anfänger-Themen 6
L HashMap Key<->Value vertauschen Java Basics - Anfänger-Themen 5
C einfach verkettete Liste -> Elemente vertauschen Java Basics - Anfänger-Themen 2
N Groß- und Kleinschreibung vertauschen? Java Basics - Anfänger-Themen 3
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
M Kommandozeilenparamter als EINEN String werten Java Basics - Anfänger-Themen 5
T PDF-Formula (XFDF) via Mail - Betreff mit Werten aus PDF-Formular ergänzen Java Basics - Anfänger-Themen 2
A Werten aus dem Text ausliesten Java Basics - Anfänger-Themen 6
Csircc Neuer Array mit geringerer Länge und selben werten. Java Basics - Anfänger-Themen 2
M Wie kann eine Methode (string) eine andere Methode (void) mit zufälligen int-Werten aufrufen? Java Basics - Anfänger-Themen 4
U Erste Schritte nextGaussian zwischen zwei Werten Java Basics - Anfänger-Themen 19
C Methode Grouping mit Werten ausgeben Java Basics - Anfänger-Themen 2
J Java Queue mit default Werten erstellen Java Basics - Anfänger-Themen 4
W Mehrfach das gleiche Attribut für ein Objekt erzeugen (mit verschiedenen Werten) Java Basics - Anfänger-Themen 2
D Input/Output fehlerhafter Algorithmus zum Ersetzen von Array-Werten nach logischem Schema Java Basics - Anfänger-Themen 1
M Arrays mit mehreren Werten über JOptionPane initialisieren Java Basics - Anfänger-Themen 12
K Übergabe von Werten (zweidimensionales Array) aus einer Methode an zweidimensionales Array in main() Java Basics - Anfänger-Themen 3
N Speichern von Werten in Variablen nach Schließen des Programms Java Basics - Anfänger-Themen 3
O zwei Arrays nach Werten durchsuchen und zusammenfügen Java Basics - Anfänger-Themen 3
B Rückgabe von zwei Werten: String und double Java Basics - Anfänger-Themen 14
Henri Vergabe von undeklarieten Werten Java Basics - Anfänger-Themen 64
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
E OOP Array anlegen mit unterschiedlichen Werten Java Basics - Anfänger-Themen 8
R Eingabe String umwandeln zu Integer Werten Java Basics - Anfänger-Themen 8
M Speichern von Werten in Array Java Basics - Anfänger-Themen 1
P Input/Output Bestimmte Anzahl von Werten in einem Array an Methode übergeben Java Basics - Anfänger-Themen 2
M Übergabe von Werten Java Basics - Anfänger-Themen 10
Bregedur Methoden Matcher und Pattern bei sich wiederholenden Werten Java Basics - Anfänger-Themen 1
M Java Arrays mit Werten initialisieren Java Basics - Anfänger-Themen 3
G Interpolation von Werten im 3D-Raum Java Basics - Anfänger-Themen 3
N Zählen von Rationalen Werten eines Arrays Java Basics - Anfänger-Themen 10
R Objekt erstellen - Attribute mit mehreren Werten Java Basics - Anfänger-Themen 1
F JButton [] mit Werten hinterlegen Java Basics - Anfänger-Themen 10
L Frage zur Rückgabe von Werten bei Methoden Java Basics - Anfänger-Themen 4
L Array mit Werten belegen Java Basics - Anfänger-Themen 7
Crazynet jTable erste Zeile mit deffinierten Werten Java Basics - Anfänger-Themen 0
J JFrame ausgabe von Werten Java Basics - Anfänger-Themen 9
F Array mit Scanner-Werten Java Basics - Anfänger-Themen 4
W Klassen [GELÖST] Objekte während der Laufzeit mit neuen veränderten Werten beliebig oft initialisieren Java Basics - Anfänger-Themen 2
J ArrayList<int[]> wird beim hinzufügen von werten komplett überschrieben warum? Java Basics - Anfänger-Themen 1
GreyFox Object dynamisch mit werten versehen. Java Basics - Anfänger-Themen 4
C Arrays zusammenfügen mit abwechselnden Werten Java Basics - Anfänger-Themen 3
F Map nach Werten durchsuchen Java Basics - Anfänger-Themen 3
S Suche richtigen Typ für Variabel mit den Werten (neu, gebraucht, beschädigt) Java Basics - Anfänger-Themen 7
V Methoden Matrix als 1D Array mit Werten füllen Java Basics - Anfänger-Themen 12
T Liste mit 2 Werten pro Eintrag Java Basics - Anfänger-Themen 9
F Effizientes Lesen von 65 Datein mit Boolean Werten Java Basics - Anfänger-Themen 6
A OOP Buchstaben mit ASCII Werten darstellen Java Basics - Anfänger-Themen 1
M Ausgeben eines 2D Arrays mit int UND String werten - BLUEJ! Java Basics - Anfänger-Themen 4
V Anzahl von gleichen Werten in einem Int-Array ermitteln Java Basics - Anfänger-Themen 4
M Mit Werten aus Arrays in anderen Methoden rechnen? Java Basics - Anfänger-Themen 3
D Sortieren von int Werten von Objekten in einer LinkedList, kann nicht auf int Werte zugreifen Java Basics - Anfänger-Themen 3
L Array - Nach 2 gleichen Werten stoppen Java Basics - Anfänger-Themen 5
N mit Werten aus einer mysql datenbank in java rechnen Java Basics - Anfänger-Themen 17
J Subtraktion von double Werten Java Basics - Anfänger-Themen 3
P Objekt mit Werten aus Array füllen Java Basics - Anfänger-Themen 10
P Vererbung Auslesen von Werten einer ArrayList Java Basics - Anfänger-Themen 30
S Erfahrungswerte von schnelles durchlaufen von Listen mit 2 Werten Java Basics - Anfänger-Themen 10
T Externes Programm mit Werten versorgen Java Basics - Anfänger-Themen 4
T Ausgabe von Werten des Typs double Java Basics - Anfänger-Themen 8
J Zuweisung von gesicherten Werten funktioniert nicht Java Basics - Anfänger-Themen 9
P Methoden Übergabe von Werten Java Basics - Anfänger-Themen 7
D Regex mit Werten aus txt Datei Java Basics - Anfänger-Themen 2
C Mit if Überprüfung von drei Werten durchführen Java Basics - Anfänger-Themen 6
C Comparator mit Double Werten? Java Basics - Anfänger-Themen 12
J Datentypen Fehler bei Berechnung mit Double und Int-Werten Java Basics - Anfänger-Themen 22
T Hashmap mit mehreren Werten Java Basics - Anfänger-Themen 9
B Zweidimensionales Array mit boolean Werten Java Basics - Anfänger-Themen 3
F grafische Anzeige von Werten Java Basics - Anfänger-Themen 2
darekkay Datentypen HashSet bzw. LinkedList mit Werten initialisieren Java Basics - Anfänger-Themen 3
U Datentypen Ungenauigkeit von Double Werten Java Basics - Anfänger-Themen 5
L Datentypen Methode zum Abspeichern von Variablen mit größeren int-Werten Java Basics - Anfänger-Themen 6
Rudolf Datentypen Vectorliste mit Werten in zufälliger Anordnung Java Basics - Anfänger-Themen 5
1 Ständige Abfrage von Werten Java Basics - Anfänger-Themen 19
M Image zeichenen mit Double Werten Java Basics - Anfänger-Themen 4
J double-Array mit Werten von Methode füllen und an andere Methode übergeben Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben