Verlgeichsoperator in If funktioniert nicht?

Kababär

Top Contributor
Hi,

das hört sich wirklich seltsam an, aber der Vergleichsoperator (< bzw >) funktioniert in meinem if-Statement nicht.
Ich bin schon den ganzen Tag am programmieren und vielleicht sehe ich mittlerweile den Wald vor lauter Bäumen nicht mehr.
Ich übergebe ein Array, dessen Werte positiv sind und alle größer 0 sind, dennoch wird das if-Statement kein einziges Mal true, ich bin mit dem Debugger durch.

Code:
    public static int getMaxValOf1D(int[] arr) {
        int max = 0;
        int bval = 0;
        for (int i = 2; i < arr.length; i++) {
            bval = arr[i];
            if (max < bval) {
                max = bval;
            }
        }
        return max;
    }

Heute scheint definitiv nicht mein Tag zu sein..
 

knilch

Bekanntes Mitglied
Hi,
nur mal so eine Frage, wieso fängst du erst beim dritten Arrayelement an? Möchtest du nicht von allen Array-Elementen das grösste zurück bekommen?
Java:
public class Main {
    public static void main(String[] args) {
        int[] array = new int[]{1,75,2,16,4,55,66,77,5};
        int max = getMaxValOf1D(array);
        System.out.println(max);
    }

    public static int getMaxValOf1D(int[] arr) {
        int max = 0;
        int bval = 0;
        for (int i = 0; i < arr.length; i++) {
            bval = arr[i];
            if (max < bval) {
                max = bval;
            }
        }
        return max;
    }
}
 

JStein52

Top Contributor
Ja, dann ist natürlich der Algorithmus unter Umständen falsch. Wenn alle Elemente < 0 sind ergibt dies fälschlicherweise 0 !! Und wenn eine 0 drin vorkommt stimmt es zwar wieder aber er kommt natürlich nie in den if-Zweig

Edit: besser wäre natürlich das hier:

Code:
int max = Integer.MIN_VALUE;
 
Zuletzt bearbeitet:

Kababär

Top Contributor
Die Werte können nicht negativ sein. Ich arbeite mit Image-Dateien und muss gezwungernermaßen mit int-Arrays arbeiten statt mit byte-Arrays, da (int) 255 zu (byte) -1 umgewandelt wird und somit die Datenmanipulation- und analyse mit byte-Werte unbrauchbar wäre.
Das heißt die Werte im int-Array liegen im Intervall [0;255].

Also die Methode, in der ich die getMinValOf1D aufrufe, ist:

Code:
private void showInfPic(Image img) {
        //Retrieve img information
        int width;
        int height;
        int anzPix;
        int minVal;
        int maxVal;

        Alert alert = new Alert(AlertType.INFORMATION);
        alert.setTitle("Information Dialog");
        alert.setHeaderText(null);
        if (img != null) {
            width = (int) img.getWidth();
            height = (int) img.getHeight();
            anzPix = width * height;
            int arr[]= ImgUtil.retrieveInfo(img);
            maxVal = ImgUtil.getMaxValOf1D(arr);
            minVal = ImgUtil.getMinValOf1D(arr);
            int[] test = new int[]{0,1,-1,10,8,-11};
            int testminval = ImgUtil.getMinValOf1D(test);
            int testmaxval = ImgUtil.getMaxValOf1D(test);
//53295
//            BufferedImage bimg = ImgUtil.convertToBuffImage(img);
//            ImgUtil.marchThroughImageAndPrintPixel(bimg);
//            byte[] pixVal = ImgUtil.convertBITo2(bimg);
//            minVal = ImgUtil.getMinValOf1D(pixVal);
//            maxVal = ImgUtil.getMaxValOf1D(pixVal);
//
            alert.setContentText("Breite: " + width + "\nHöhe: " + height + "\nAnzahl Pixel: "
                    + anzPix + "\nMaximaler Pixelwert: " + maxVal + ""
                    + "\nMinimaler Pixelwert: " + minVal);
        } else {
            alert.setContentText("Keine Informationen vorhnanden. Bild ausgewählt?");
        }

        alert.showAndWait();
    }

Mein Netbeans verhält sich auch etwas seltsam.
Beim Debuggen springt er von
"minVal = ImgUtil.getMinValOf1D(arr);"
zum Auskommentierten Teil
"// byte[] pixVal = ImgUtil.convertBITo2(bimg);"
und dann zum Else-Zweig.
Auch ist mir aufgefallen, dass Änderungen nicht direkt übernommen werden. Ändere ich beispielsweise etwas im Code oder in der GUI, wird dies erst beim zweiten Ausführen übernommen bzw angezeigt.
Liegt da ein Fehler mit Maven vor?

Nachdem ich nun zwei Mal ausgeführt habe, konnte ich die Testwerte feststellen, leider sind da beide trotzdem 0 (also testminval und testmaxval).

Spinnt mein Netbeans?
 

Kababär

Top Contributor
Es geht um beides, da beides nicht funktioniert.
Und ich habe mir die 2000 Werte alle angesehen, alle >= 0.

edit: Ich habe eher das Gefühl es liegt an Netbeans statt am Code wegen des merkwürdigen Verhaltens..
 

Meniskusschaden

Top Contributor
Falls du getMinValOf1D() analog getMaxValOf1D() implementiert hast (Initialisierung der Ergebnisvariablen mit 0), würde getMinValOf1D() natürlich nur mit negativen Werten korrekt funktionieren. In dem Fall müsstest du die von @JStein52 für getMaxValOf1D() vorgeschlagene Verbesserung entsprechend abwandeln.
 

Kababär

Top Contributor
Dass int max bzw int min mit 0 initialisiert werden, ist nicht kritisch. Nur die Abfrage muss dementsprechend angepasst werden.

Code:
    public static int getMaxValOf1D(int[] arr) {
        int max = 0;
        int bval;
        for (int i = 2; i < arr.length; i++) {
            bval = arr[i];
            if (max < bval) {
                max = bval;
            }
        }
        return max;
    }

    public static int getMinValOf1D(int[] arr) {
        int min = 0;
        int bval = 0;
        for (int i = 2; i < arr.length; i++) {
            bval = arr[i];
            if (min > bval) {
                min = bval;
            }
        }
        return min;
    }

Ich habe mir mal ein kleines Testprojekt angelegt mit zufälligen Werten und habe es getestet.
Der Debugger verhält sich seltsam. Läuft die Schleife nicht ganz durch, Nullpointer Ex, ...
Ich installiere Netbeans, Java und Maven neu und versuch es dann nochmal.

edit: Direkt in arr. Ich bin durch die Methode durch.
Nach der Vorschleife bspw. für MaxValue:
bval = 255 wenn max=0.
If-Anweisung wird nicht ausgeführt.
 

Kababär

Top Contributor
Ja. Es lag wohl ein Konfigurationsfehler von Maven bzw dem Projekt vor. Beim Ausführen bzw Starten des Projekten wurde das Projekt nicht neu gebaut und compiled..
Heißt ich musste dementsprechend die Parameter neu eintragen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Datenüberwachung funktioniert nicht Java Basics - Anfänger-Themen 9
mo13 JTextField funktioniert nicht Java Basics - Anfänger-Themen 4
J .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
G Mit jPackage erstellte EXE funktioniert nicht Java Basics - Anfänger-Themen 2
G Robot funktioniert nicht bei SelectionListener Java Basics - Anfänger-Themen 6
R RegEx funktioniert nicht Java Basics - Anfänger-Themen 14
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
monsterherz Punkt Notation funktioniert nicht Java Basics - Anfänger-Themen 4
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
ms_cikar Bin to Float convertieren funktioniert nicht Java Basics - Anfänger-Themen 24
B Schrankensystem mit Farberkennung für Flashgame funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
I Greenscreen, funktioniert nicht zu 100%... nicht alle Pixel werden geändert Java Basics - Anfänger-Themen 1
JordenJost char variable funktioniert irgendwie nicht a+b ergibt nicht à Java Basics - Anfänger-Themen 4
M Operatoren Strings mit Vergleichsoperatoren, funktioniert das? Java Basics - Anfänger-Themen 9
Garrit1994 Continue funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
B Methoden Übergebe Variabel funktioniert nicht Java Basics - Anfänger-Themen 17
P exportiertes Programm funktioniert nur teilweise Java Basics - Anfänger-Themen 7
Agent4nobody Programmstart durch aufruf des interpreters funktioniert nicht Java Basics - Anfänger-Themen 14
Fugover Programm funktioniert nicht Java Basics - Anfänger-Themen 11
X Datentypen String.equals funktioniert nicht Java Basics - Anfänger-Themen 5
berserkerdq2 wie funktioniert contenthandler, was muss ich bei der Methode startElement und endElement tun? Java Basics - Anfänger-Themen 11
Alen123 Warum funktioniert mein Code nicht? Java Basics - Anfänger-Themen 64
sserio Array funktioniert nicht Java Basics - Anfänger-Themen 2
sserio Wieso funktioniert mein Programm nicht Java Basics - Anfänger-Themen 2
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
sserio Größtes Palindrom-Produkt Programm funktioniert nur halb Java Basics - Anfänger-Themen 23
sserio Rekursion größten Primfaktor finden funktioniert nicht Java Basics - Anfänger-Themen 8
sserio Wieso funktioniert mein TableView nicht /JavaFX. Java Basics - Anfänger-Themen 4
Avalon Warum funktioniert eine Bedingung und eine andere nicht? Java Basics - Anfänger-Themen 2
J Datentypen String in File konvertieren funktioniert nicht Java Basics - Anfänger-Themen 4
U Wie genau funktioniert der ! Operator Java Basics - Anfänger-Themen 3
stormyark 4 Bit in einer for-schleife funktioniert nicht Java Basics - Anfänger-Themen 3
J Nach dem Exportieren funktioniert mein Programm nicht mehr Java Basics - Anfänger-Themen 8
M Java printf(Locale.... funktioniert nicht Java Basics - Anfänger-Themen 3
N Wieso funktioniert die Deklaration nicht Java Basics - Anfänger-Themen 3
C Long value an Stringbuilder übergeben, equals Methode funktioniert nicht Java Basics - Anfänger-Themen 2
districon Backtracking funktioniert nicht ganz Java Basics - Anfänger-Themen 3
H Array rückwärts auslesen funktioniert nicht Java Basics - Anfänger-Themen 3
S Math.random funktioniert nicht Java Basics - Anfänger-Themen 5
S Schleife funktioniert nicht Java Basics - Anfänger-Themen 2
B Ausgabe in TextArea funktioniert nicht Java Basics - Anfänger-Themen 2
Henri Webservice Delete und Update Methode funktioniert nicht Java Basics - Anfänger-Themen 27
J ActionListener von JCheckBox im Knoten von JTree funktioniert nicht Java Basics - Anfänger-Themen 2
C System.out.println - Parameterübergabe funktioniert nicht Java Basics - Anfänger-Themen 2
JD_1998 Hilfsmethode if return funktioniert nicht Java Basics - Anfänger-Themen 2
C JButton Text 2 Mal ändern funktioniert nicht Java Basics - Anfänger-Themen 8
T % funktioniert nicht Java Basics - Anfänger-Themen 2
D e(fx)clipse installieren funktioniert nicht Java Basics - Anfänger-Themen 3
D GPIO Nutzung mit Pi4J Library auf Raspberry funktioniert nicht Java Basics - Anfänger-Themen 3
F Java GUI-PaintComponent funktioniert nicht Java Basics - Anfänger-Themen 1
J equals funktioniert nicht - Warum Java Basics - Anfänger-Themen 13
L hilfe run button funktioniert nicht Java Basics - Anfänger-Themen 13
I Array funktioniert nicht. Java Basics - Anfänger-Themen 2
T if else Befehl funktioniert nicht richtig Java Basics - Anfänger-Themen 27
V_Fynn03 Erste Schritte BubbleSort Quelltext funktioniert noch nicht Java Basics - Anfänger-Themen 1
V_Fynn03 Erste Schritte JButton funktioniert nicht trotz richtiger Methode. Java Basics - Anfänger-Themen 17
R Erste Schritte Eclipse - Java - System.out.println(); funktioniert nicht Java Basics - Anfänger-Themen 2
G Programm mit Schleife funktioniert nicht Java Basics - Anfänger-Themen 5
T Redirect funktioniert nicht Java Basics - Anfänger-Themen 3
R Mein Plugin funktioniert nicht? Java Basics - Anfänger-Themen 10
J Zufallszahl funktioniert nicht Java Basics - Anfänger-Themen 27
D Klassen add Methode funktioniert nicht. Java Basics - Anfänger-Themen 31
J ImagaIO funktioniert nicht unter Ubuntu Java Basics - Anfänger-Themen 23
F Vergleiche mit charAt funktioniert bei Strings nicht, was tun? Java Basics - Anfänger-Themen 5
N Wochentagberechner Ausgabe funktioniert nicht Java Basics - Anfänger-Themen 7
G Mein Java Projekt funktioniert nicht Java Basics - Anfänger-Themen 5
J Einlesen von Datei funktioniert nicht Java Basics - Anfänger-Themen 8
W Wieso funktioniert mein Switch Case nicht ?! Java Basics - Anfänger-Themen 9
P Zeichenkette Zeichen ausschlißen funktioniert nicht richtig Java Basics - Anfänger-Themen 9
F Primzahlsuche Schleife funktioniert nicht, HILFE! Java Basics - Anfänger-Themen 8
M Methoden Arrays.deepequals() funktioniert nicht Java Basics - Anfänger-Themen 2
B Statische Methode return funktioniert nicht. Java Basics - Anfänger-Themen 19
S JDK 9 für Windows 32 bit installiert, aber es funktioniert nix Java Basics - Anfänger-Themen 6
F Input/Output die eine txt-Datei funktioniert die andere nicht Java Basics - Anfänger-Themen 8
CptK Interface Bild über Methode ändern funktioniert nicht Java Basics - Anfänger-Themen 4
D Funktion zwei Arraylisten zu verleichen ob gleich funktioniert nicht Java Basics - Anfänger-Themen 26
A Hilfe bei Rekursion,Ich verstehe nicht,wie funktioniert die Rekursion in der Methode "walk" Java Basics - Anfänger-Themen 13
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
P Upload Button funktioniert nicht Java Basics - Anfänger-Themen 13
S Dijkstra Algorithmus funktioniert nicht Java Basics - Anfänger-Themen 4
M Datei einlesen mit Scanner funktioniert nicht (FileNotFoundException) Java Basics - Anfänger-Themen 6
A TicTacToe funktioniert bis auf "schiefer" Sieg Java Basics - Anfänger-Themen 6
M Erste Schritte Importieren funktioniert nicht Java Basics - Anfänger-Themen 7
N Funktion funktioniert nicht immer Java Basics - Anfänger-Themen 6
F FileCreation - PrintWriter funktioniert nicht... Java Basics - Anfänger-Themen 1
I Collections.shuffle funktioniert nicht Java Basics - Anfänger-Themen 1
T Methode in Klasse funktioniert nicht Java Basics - Anfänger-Themen 14
T While Schleife funktioniert nicht Java Basics - Anfänger-Themen 14
C Warum funktioniert 'instanceof' bei generics nicht? Java Basics - Anfänger-Themen 4
M Frage, wie dieser Code funktioniert, bzw. weshab er bei mir nicht funktioniert Java Basics - Anfänger-Themen 4
L Level Reset funktioniert nicht Java Basics - Anfänger-Themen 3
A Java Scanner Funktioniert nicht Java Basics - Anfänger-Themen 2
R Kleines Java Spiel funktioniert nicht. Java Basics - Anfänger-Themen 2
W Warum funktioniert mein Programm nicht ? Java Basics - Anfänger-Themen 12
B OOP Objekt in IF erzeugen - funktioniert nicht so richtig Java Basics - Anfänger-Themen 11
W Warum funktioniert meine if Anweisung nicht? Java Basics - Anfänger-Themen 8
J Stringvergleich funktioniert nicht Java Basics - Anfänger-Themen 8
W Warum funktioniert mein Programm nicht ? Java Basics - Anfänger-Themen 6
L Taschenrechner mit switch und while funktioniert noch nicht richtig Java Basics - Anfänger-Themen 22

Ähnliche Java Themen

Neue Themen


Oben