Hallo, ich bin etwas überfordert mit folgender Aufgabe: Das Programm soll ein Array einliesen und überprüfen, ob und wie das Array sortiert ist.
Folgendes funktioniert bei mir, Programm bricht ab, wenn negativer Wert eingegeben wird. Wenn 0 eingegeben wird, wird die Meldung "Array is empty" ausgegeben. Bei der Sortierung haperts, egal was ich eingeben, es wird immer die Meldung "elements are unsorted" ausgegeben. Was hab ich falsch gemacht?!
Für Verbesserungsvorschläge bin ich sehr dankbar!
Beste Grüsse
Folgendes funktioniert bei mir, Programm bricht ab, wenn negativer Wert eingegeben wird. Wenn 0 eingegeben wird, wird die Meldung "Array is empty" ausgegeben. Bei der Sortierung haperts, egal was ich eingeben, es wird immer die Meldung "elements are unsorted" ausgegeben. Was hab ich falsch gemacht?!
Code:
public class CheckArray {
static int[] readArray(int n) {
if (n < 0) {
return null;
}
int[] arr = new int[n];
if (n > 0) {
for (int i = 0; i < n; i++) {
arr[i] = IO.readInt();
}
IO.readLn();
}
return arr;
}
public static void main(String[] args) {
int arrayLen = 0;
IO.write("Number of elements (negative value to quit): ");
arrayLen = IO.readInt();
if (arrayLen==0) {
IO.writeLn("Array is empty.");
} else {
if (arrayLen > 0) {
IO.write("Elements: ");
for(int i=1;i<arrayLen;i++){
{
int [] arr = new int [ arrayLen ];
arr = readArray(arrayLen);
if(arr[i]==arr[i-1] && arrayLen==0)
{
arrayLen=0;
}
else if(arr[i]>arr[i-1] && (arrayLen==0||arrayLen==1))
{
arrayLen=1;
}
else if(arr[i]<arr[i-1] && (arrayLen==0||arrayLen==2))
{
arrayLen=2;
}
else
{
arrayLen=3;
}
}
switch(arrayLen){
case 0: IO.write("All elements are equal.");
case 1: IO.write("Elements are in ascending order.");
case 2: IO.write("Elements are in descending order.");
default: IO.write("Elements are unordered.");break;
}
}
} else {
if (arrayLen < 0) {
IO.writeLn("Negative value. Programm quits!" );
}
}
}
}
}
Beste Grüsse