Hallo alle zusammen!
Ich bin noch relativ neu hier und dies ist mein erster Beitrag. Ich versuche mit Hilfe von CodeGym Java programmieren zu lernen und habe nun eine Aufgabe gehabt eine Reihe von Zahlen von der Tastatur einzulesen und von groß nach klein zu sortieren. Der meiste Code ist schon vorgegeben und eigentlich auch klar. Nur die sortieren() Methode sollte man selber programmieren. Meine Lösung ist:
Aber das funktioniert nicht, weil anscheinend nur eine Kopie des Arrays innerhalb der sortieren() Methode verändert wird und nicht das ursprüngliche Array selbst.
Die Lösung von CodeGym sieht so aus:
Klar, mein Code ist noch sehr unbeholfen aber er sollte doch funktionieren, oder nicht? Was mache ich falsch oder wo liegt mein Denkfehler. Ich hoffe mal Ihr könnt mich erleuchten. Vielen Dank.
Mod-Edit: Code-Tags eingefügt ... evtl. fehlen Elemente wie
Ich bin noch relativ neu hier und dies ist mein erster Beitrag. Ich versuche mit Hilfe von CodeGym Java programmieren zu lernen und habe nun eine Aufgabe gehabt eine Reihe von Zahlen von der Tastatur einzulesen und von groß nach klein zu sortieren. Der meiste Code ist schon vorgegeben und eigentlich auch klar. Nur die sortieren() Methode sollte man selber programmieren. Meine Lösung ist:
Java:
package de.codegym.task.task07.task0728;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
/*
In absteigender Reihenfolge
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int[] array = new int[20];
for (int i = 0; i < 20; i++) {
array[i] = Integer.parseInt(reader.readLine());
}
sortieren(array);
for (int x : array) {
System.out.println(x);
}
}
public static void sortieren(int[] array) {
//schreib hier deinen Code
ArrayList<Integer> zahlen = new ArrayList<>();
for(int x : array) {
zahlen.add(x);
}
for(int i=zahlen.size(); i<0; i--) {
int max = zahlen.get(0);
for(int j=0; j<zahlen.size(); j++) {
if(zahlen.get(j)>max) {
max = zahlen.get(j);
}
}
for(int k=0; k<zahlen.size(); k++) {
if(zahlen.get(k)==max) {
array[i] = zahlen.remove(k);
}
}
}
}
}
Aber das funktioniert nicht, weil anscheinend nur eine Kopie des Arrays innerhalb der sortieren() Methode verändert wird und nicht das ursprüngliche Array selbst.
Die Lösung von CodeGym sieht so aus:
Java:
package de.codegym.task.task07.task0728;
import java.io.BufferedReader;
import java.io.InputStreamReader;
/*
In absteigender Reihenfolge
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int[] array = new int[20];
for (int i = 0; i < 20; i++) {
array[i] = Integer.parseInt(reader.readLine());
}
sortieren(array);
for (int x : array) {
System.out.println(x);
}
}
public static void sortieren(int[] array) {
for (int i = 0; i < array.length; i++) {
for (int j = i; j < array.length; j++) {
if (array[i] < array[j]) {
int temp = array;
array[i] = array[j];
array[j] = temp;
}
}
}
}
}
Klar, mein Code ist noch sehr unbeholfen aber er sollte doch funktionieren, oder nicht? Was mache ich falsch oder wo liegt mein Denkfehler. Ich hoffe mal Ihr könnt mich erleuchten. Vielen Dank.
Mod-Edit: Code-Tags eingefügt ... evtl. fehlen Elemente wie
[i]
die als Formatierungsanweisung herausgenommen wurden.
Zuletzt bearbeitet von einem Moderator: