Problem mit Arrays im Array

Castyll

Aktives Mitglied
Hallo,
Mir wurde die Aufgabe gegeben eine Methode zu entwickeln, welches Array mit ganzzahligen Zahlen prüft, ob eine monotone Steigung existiert. Das war ein Problem zu entwickeln. Jedoch soll ich nun in einer For-Schleife ein Array, welches wiederrum mit Arrays voll Beispielfolgen gefüllt ist, abrufen und mithilfe der Methode prüfen, ob es jeweils eine monotone Steigung gibt. Und bei dem mehrdimensionalen Array habe ich das Problem. Zunächst hier der Code:
Java:
public class Aufgabe_Ue5_2
{
//Methode
static boolean monoton;
    public static void monotonP (int[][] y)
    {
        for (int i=0; i<1; i++ )
        {
            for (int k=0; k<y.length; k++)
            {
                if (y[i][k]<= y[i][k+1])
            {
                monoton = true;
               
            }
           
            else
            {
                monoton = false;
            }
               
            }
        }
    }
   

// Test mit Beispielfolgen
public static void test_b()
    {
    int[] a = {-1,0,1};
     int[] b = {2,2,2,2};
     int[] c = {-1,-2,-3};
     int[] d = {3,2};
    int[] e = {0};
    int[][] y = {{-1,0,1},{2,2,2,2},{-1,-2,-3},{3,2},{0}};
   
    for (int i=0; i< 1; i++)
    {
       
        for (int j=0; j<5; j++)
        {
           
        monotonP(y[i][j]);
       
        if (monoton=true)
        {
            System.out.println ("Die Folge " + y[i][j]+ " ist monoton steigend");
        }
       
        else
        {
            System.out.println ("Die Folge " + y[i][j]+ " ist nicht monoton steigend");
        }
   
        }
    }
    }

Ich bekomm jedoch die Fehlermeldung:
The method monotonP(int[][]) in the type Aufgabe_Ue5_2 is not applicable for the arguments (int)
Normalerweise heißt das ja ich hätte beim Methodenaufruf eine Integer übergeben, was aber nicht der Fall ist, ich habe ja normal eine Stelle des mehrdimensionalen Arrays übergeben. Hat jemand eine Idee?
 

Enceladus271

Bekanntes Mitglied
Du übergibst der Methode den Wert y[ i ][ j ]. Das heißst in deinem 2-dim Array aus dem i-ten Array das j-te Element, also einen int. Daher der Fehler. Wenn du das komplette 2-dim Array übergeben willst, musst du monotonP(y) aufrufen.

Ich würde auch insgesamt anders vorgehen. Du brauchst erstmal eine Methode die dir zurückgibt, ob ein 1-dim Array monoton ist. Das Ergebnis bitte nicht in einer static Variablen speichern, sondern als Rückgabewert der Methode verwenden:
public static boolean isMonoton( int[] array )

Verwenden kannst du die Methode dann so:
Java:
    for ( int i = 0; i < y.length; i++ ) {
       boolean isMonotone = isMonoton( y[i] );
       if ( isMonotone ) {
         System.out.println( "Die Folge " + Arrays.toString( y[i] ) + " ist monoton steigend" );
       } else {
         System.out.println( "Die Folge " + Arrays.toString( y[i] ) + " ist nicht monoton steigend" );
       }
     }
 

InfectedBytes

Top Contributor
du übergibst ja auch nur einen int:
Java:
monotonP(y[I][j]);
y ist nunmal ein zwei dimensionales array aus int, und ann der stelle i,j befinden sich halt ein einzelner int.
die methode will das ganze array haben, also musst du y übergeben.

Sonstiges anmerkungen:
du erzeugst die arrays a bis e, benutzt sie aber nie.
in monotonP lässt du die schleife von i=0; i<1 laufen, du solltest es aber über die ganze länge laufen lassen.
Dein methode berechnet keine monotonie, denn die folge 3,1,2 ist ganz offensichtlich nicht monoton steigend, deine methode würde dies aber sagen. denn die methode vergleicht 3 und 1, setzt monoton auf false, dann vergleicht sie 1 und 2 und setzt monoton doch wieder auf true.
sobald du einmal feststellst, dass die folge nicht monoton ist, solltest du die schleife abbrechen.
 

Castyll

Aktives Mitglied
@Enceladus271
Java:
public class Aufgabe_Ue5_2
{
//Methode
static boolean monoton;
    public static void monotonP (int[][] y)
    {
        for (int i=0; i<y.length; i++ )
        {
            for (int k=0;k<y.length-1;k++)
            {
                if (y[i][k] <= y[i][k+1])
           
            {
                monoton = true;
               
            }
           
            else
            {
                monoton = false;
                break;
            }
               
            }
        }
        }
//Test
public static void test_b()
    {
   
    int[][] y = {{-1,0,1},{2,2,2,2},{-1,-2,-3},{3,2},{0}};
   
    for (int i=0; i<y.length; i++)
    {
       
        for (int j=0; j<y[i].length; j++)
        {
           
        monotonP(y);
       
        if (monoton=true)
        {
            System.out.println ("Die Folge " + y[i]+ " ist monoton steigend");
        }
       
        else
        {
            System.out.println ("Die Folge " + y[i]+ " ist nicht monoton steigend");
        }
   
        }
    }
    }
Viel habe ich jetzt nicht geändert, aber ich verstehe nicht wieso der Code die Grenzen überschreiten sollte. In der Methode habe ich die y - Länge auch schon vermindert, wegen der k+1 Zeile zum vergleichen, aber bringt auch nix. Code hat keine errors, wird aber während dem kompilieren dann nicht ausgeführt.
 

InfectedBytes

Top Contributor
Java:
for(int i=0; i<y.length; i++)
       {
           for(int k=0;k<y.length-1;k++)
length gibt dir die länge der ersten dimension! In der inneren schleife benutzt du also die falsche dimension.
Besser:
Java:
for(int i=0; i<y.length; i++){
  for(int k=0; k<y[i].length; k++) {...}
}
 

knilch

Bekanntes Mitglied
Hi,
du iteriest im innern for-loop mit
Java:
for (int k=0; k<y.length; k++) {
   if (y[i][k]<= y[i][k+1]) {
   ...
}
}
Aber y.length gibt dir nicht die länge vom innern Array, sondern vom ganzen array zurück.
Wenn du über das innere array Iterieren willst, dann musst du die länge so begrenzen:
Java:
public static void monotonP (int[][] y){
    for (int i=0; i<y.length; i++ ) {
        for (int k=0;k<y[i].length-1;k++) {
            if (y[i][k] <= y[i][k+1]) {
                monoton = true;
            }

            else {
                monoton = false;
                break;
            }
        }
    }
}
So wie du es implementiert hast, wirst du, wenn eine von den inneren Reihen nicht monoton ist, für das ganze Array immer monoton=false erhalten. Wenn das so gewünscht ist... Sonst muss du es so implementieren... hier bekommst du für jede Reihe ein Resultat, ob diese monoton ist oder nicht...
Hier mal ein funktionierendes Beispiel:
Java:
import java.util.Arrays;

public class Test {

    public static void main(String[] args) {
        test_b();
    }

    private static boolean isMonoton (int[] y) {
        for(int i = 0; i < y.length-1;) {
            if (y[i] > y[i+1])
                return false;
        }
        return true;
    }


    public static void test_b() {
        int[][] y = {{-1,0,1},{2,2,2,2},{-1,-2,-3},{3,2},{0}, {1,2,3}};
        for ( int i = 0; i < y.length; i++ ) {
            if(isMonoton( y[i]))
                System.out.println( "Die Folge " + Arrays.toString( y[i] ) + " ist monoton steigend" );
            else
                System.out.println( "Die Folge " + Arrays.toString( y[i] ) + " ist nicht monoton steigend" );

        }
    }
}
 
Zuletzt bearbeitet:

Castyll

Aktives Mitglied
@knilch Hallo, danke für die Antwort. Ich habe gerade deinen Code in Eclipse ausgeführt, bekomme aber kein Ergebnis. Keine Fehlermeldungen aber auch keine Ausgabe.
Eine Frage hätte ich noch: Wenn der Wert bei der Methode also kleiner ist, switcht es automatisch zu true, richtig? Else darf bei einer Returnmethode ja nicht verwendet werden.
Edit: Es wurde das Raufzählen der Index-Zahl vergessen. Jetzt funktioniert es. Danke!
 
Zuletzt bearbeitet:

knilch

Bekanntes Mitglied
Hi
Neu @knilch Hallo, danke für die Antwort. Ich habe gerade deinen Code in Eclipse ausgeführt, bekomme aber kein Ergebnis. Keine Fehlermeldungen aber auch keine Ausgabe.
Eine Frage hätte ich noch: Wenn der Wert bei der Methode also kleiner ist, switcht es automatisch zu true, richtig? Else darf bei einer Returnmethode ja nicht verwendet werden.
Edit: Es wurde das Raufzählen der Index-Zahl vergessen. Jetzt funktioniert es. Danke!
sehr gut :)
Noch zu deiner Fage:
Wenn der Wert bei der Methode also kleiner ist, switcht es automatisch zu true, richtig? Else darf bei einer Returnmethode ja nicht verwendet werden
Die Methode
Java:
private static boolean isMonoton (int[] y) {
...
}
vergleicht die Elemente:
Code:
 y[i] > y[i+1]
Falls
Code:
y[i] > y[i+1]
wahr ist,
ist die Prüfung fertig, d.h. alle restlichen Elemente werden nicht mehr geprüft --> Der Rückgabewert von isMonoton(...) ist false (nicht monoton).
Falls für alle Vergleiche
Code:
y[i] <= y[i+1]
gilt, dann ist der Rückgabewert von isMonoton(...) true. klar?
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
J Traveling Salesman Problem [Arrays] Java Basics - Anfänger-Themen 9
S Doppel For Schleife mit Arrays - Problem bei der Ausgabe Java Basics - Anfänger-Themen 4
javajoshi Problem mit zwei Threads und Arrays (Runnable) Java Basics - Anfänger-Themen 12
S Collections Problem mit 2D Arrays Java Basics - Anfänger-Themen 5
E Problem mit Arrays bei Benutzung einer GUI Java Basics - Anfänger-Themen 3
A Problem mit Mehrdimensionalen Arrays Java Basics - Anfänger-Themen 4
L Problem mit Arrays .... Java Basics - Anfänger-Themen 12
M Problem bei Ausgabe eines Arrays Java Basics - Anfänger-Themen 5
syfer Arrays.binarySearch Problem Java Basics - Anfänger-Themen 4
F Arrays.sort( ) Problem Java Basics - Anfänger-Themen 14
B Problem bei Überprüfung des Inhalts eines Arrays Java Basics - Anfänger-Themen 25
K Arrays - Komma zu viel, kein Problem? Java Basics - Anfänger-Themen 3
V Vorstellung und Problem bei Ausgabe des Inhalts eines Arrays Java Basics - Anfänger-Themen 4
M Problem bei Arrays mit Char Java Basics - Anfänger-Themen 3
D Arrays.toString problem Java Basics - Anfänger-Themen 2
M Problem mit zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
J Problem mit NullPointerException bei Verwendung eines Arrays Java Basics - Anfänger-Themen 6
P Spiel im Schiffe-Versenken Stil, Problem mit Erstellung des zweidimensionalen ARRAYs Java Basics - Anfänger-Themen 7
J Schleifen-Problem mit Arrays Java Basics - Anfänger-Themen 8
J Problem mit Konstrultoren und Arrays Java Basics - Anfänger-Themen 7
G Problem mit Größenänderung eines Arrays Java Basics - Anfänger-Themen 3
J Arrays: Wo liegt das Problem? Java Basics - Anfänger-Themen 6
K Problem mit arrays Java Basics - Anfänger-Themen 6
P Habe da ein Problem mit Arrays! Bitte um Hilfe Java Basics - Anfänger-Themen 2
H Problem mit Arrays.binarySearch() Java Basics - Anfänger-Themen 4
V Problem mit Arrays Java Basics - Anfänger-Themen 9
F Problem mit Arrays Java Basics - Anfänger-Themen 2
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
A ScheduledExecutorService problem Java Basics - Anfänger-Themen 7
marcelnedza Problem mit Weltzuweisung, JavaKarol Java Basics - Anfänger-Themen 13
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
M Erste Schritte Collatz Problem max int Java Basics - Anfänger-Themen 3
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
L Problem bei Rechnung mit Math.pow Java Basics - Anfänger-Themen 13
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
SUPERTJB return Problem Java Basics - Anfänger-Themen 3
sserio BigInteger Problem Java Basics - Anfänger-Themen 4
JordenJost Taschenrechner problem Java Basics - Anfänger-Themen 5
K Problem mit "Random" Java Basics - Anfänger-Themen 5
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
xanxk Problem For-Schleife mit Charakter Java Basics - Anfänger-Themen 2
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Schleife Problem Java Basics - Anfänger-Themen 2
D Problem mit der Erkennung von \n Java Basics - Anfänger-Themen 2
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
HeiTim Problem mit der Kommasetzung an der richtigen stelle Java Basics - Anfänger-Themen 59
Temsky34 Problem mit dem Code Java Basics - Anfänger-Themen 17
P Problem mit Calendar.getDisplayName() Java Basics - Anfänger-Themen 8
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
M Problem mit Klassenverständnis und Button Java Basics - Anfänger-Themen 8
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
H Problem mit Verzweigungen Java Basics - Anfänger-Themen 6
H Problem mit Rückgabewert Java Basics - Anfänger-Themen 7
josfe1234 JAVA FX problem Java Basics - Anfänger-Themen 3
A Code Problem Java Basics - Anfänger-Themen 6
Henri Problem von Typen Java Basics - Anfänger-Themen 7
J Problem mit "ArrayIndexOutOfBoundsException" Java Basics - Anfänger-Themen 11
K jackson Mapping - Problem mit Zeitzonen Java Basics - Anfänger-Themen 10
B Threads Problem mit mehreren Threads Java Basics - Anfänger-Themen 38
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
D Schleifen Problem Java Basics - Anfänger-Themen 2
H So viele Fehlermeldungen, dass ich nicht weiß wo das Problem ist. Java Basics - Anfänger-Themen 6
J JAVA-Problem blockiert MEDIATHEKVIEW Java Basics - Anfänger-Themen 13
T Problem mit Lehrzeichen und String bei einfacher Chiffre Java Basics - Anfänger-Themen 8
J extends Problem Java Basics - Anfänger-Themen 2
C Polymorphie-Problem Java Basics - Anfänger-Themen 3
Kalibru Problem bei Ausgabe von Objekt Java Basics - Anfänger-Themen 1
I Format Problem mit Wert - bekomme 0,10 anstatt 10,00 Java Basics - Anfänger-Themen 6
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
amgadalghabra algorithmisches Problem Java Basics - Anfänger-Themen 19
R ArrayList Problem Java Basics - Anfänger-Themen 6
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
C RegEx Problem Java Basics - Anfänger-Themen 4
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
E Taschenrechner GUI Problem mit Fehlerhandling Java Basics - Anfänger-Themen 6
M Input/Output Fallunterscheidung Problem Java Basics - Anfänger-Themen 17
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
M Problem bei Ausgabe Java Basics - Anfänger-Themen 7
Splayfer Java Array Problem... Java Basics - Anfänger-Themen 2
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
G Subset sum problem mit Backtracking Java Basics - Anfänger-Themen 18
N Problem mit Scanner Java Basics - Anfänger-Themen 2
J Klassen Problem Java Basics - Anfänger-Themen 8
A Out.format problem. Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben