If-Schleife

  • Themenstarter Themenstarter ByeBye 137835
  • Beginndatum Beginndatum
B

ByeBye 137835

Hallo zusammen,
ich bin Anfänger mit Java und habe eigentlich nur ein kleines Problem nur für mich ist es ein großes. Ich habe mit System.getProperty( "java.version" ) die Java-Version ausgelesen und möchte nun folgendes tun.
Eine If-Schleife soll abfragen wenn die Version größer oder gleich Version 1.4 ist dann soll ein Text oder Meldung erscheinen mit Okay oder so und wenn die Version älter ist eine andere Meldung oder ein anderer Text.

Wie geht das?
 
Hi,

dies ist aber mit Vorsicht zu genießen, da hier bei der Version immer nach dem zuletzt vorkommenden "." gesucht wird. Sollte die Version aber einmal eine solche "2.3_4.2" haben wirst du zangsläufig eine NumberFormatException bekommen. Darum solltest du das ganze noch ein wenig verfeinern.
Beispielsweise so auslesen und dann nachschauen ob wirklich nur ein Punkt und sonst nur "Zahlen" vorhanden sind.

Code:
public static void main(String[] args) throws Exception {
        String version = System.getProperty("java.version");

        int lastPoint = version.lastIndexOf(".");

        version = version.substring(0, lastPoint);

        double v = 0;
        try {
            v = Double.parseDouble(version);
        }
        catch (NumberFormatException e) {
            e.printStackTrace();
        }

        if (v < 1.4) {
            throw new Exception("Eine Fehlermeldung");
        }
    }
 
Hallo!

Ich würde das über die Klasse org.apache.commons.lang.SystemUtils von http://jakarta.apache.org/commons/lang/ erledigen.
Dort gibt es die Möglichkeit den "Rahmen" der aktuellen Java Version über Flags wie:
static boolean IS_JAVA_1_1
Is true if this is Java version 1.1 (also 1.1.x versions). static boolean IS_JAVA_1_2
Is true if this is Java version 1.2 (also 1.2.x versions). static boolean IS_JAVA_1_3
Is true if this is Java version 1.3 (also 1.3.x versions). static boolean IS_JAVA_1_4
Is true if this is Java version 1.4 (also 1.4.x versions). static boolean IS_JAVA_1_5
Is true if this is Java version 1.5 (also 1.5.x versions).
abzufragen.

PS.: Es gibt keine If-Schleifen sondern nur If-Blöcke ;-)

Gruß Tom
 
Könnte man auch so machen, aber Thomas´s Version ist denke ich sicherer :

<CODE>
String jVersion = System.getProperty("java.version");
String jCompareVersion = "1.3.1_15";

System.out.println(jVersion);
if (jCompareVersion.compareTo(jVersion) >= 0)
{

System.out.println("jCompareVersion is >= der aktuellen Java-Version");
}
else
{
System.out.println("jCompareVersion is kleiner als die aktuelle Java-Version");
}
</CODE>
 
Wieso geht mein Quelltext nicht?

import java.awt.*;
import java.applet.Applet;

public class abfrage extends Applet
{
public void paint (Graphics g)
{

add( new Label( "Ihre Java-Version: " + System.getProperty( "java.version" ) ) );


if ("java.version" == 1.4)
{
g.drawString("Hallo version", 20, 100);
}
else
{
g.drawString("asfh", 20, 120);
}
}
}

Es kommt immer diese Fehlermeldung:
C:\JAVA\BIN>javac abfrage.java
abfrage.java:12: operator == cannot be applied to java.lang.String,double
if ("java.version" == 1.4)
^
1 error

Was mache ich falsch?
 
sonny1986 hat gesagt.:
Wieso geht mein Quelltext nicht?

import java.awt.*;
import java.applet.Applet;

public class abfrage extends Applet
{
public void paint (Graphics g)
{


//Wenn dann müsstest du es so machen :
String myVersion = System.getProperty( "java.version" );
add( new Label( "Ihre Java-Version: " + myVersion) );


if (myVersion.equals("1.4"))
{
g.drawString("Hallo version", 20, 100);
}
else
{
g.drawString("asfh", 20, 120);
}
Aber wie oben schon geschildert, du wirst nie einen Treffer bekommen, weil die "java.version" Property immer sowas wie 1.4.2_07 zurückliefert und die "equals" - Methode ja auf GLEICHHEIT prüft.

entweder meine Methode oder besser aber die von Thomas solltest du nehmen.
}
}

Es kommt immer diese Fehlermeldung:
C:\JAVA\BIN>javac abfrage.java
abfrage.java:12: operator == cannot be applied to java.lang.String,double
if ("java.version" == 1.4)
^
1 error

Was mache ich falsch?


Gruß,


Wurzelseppi
 
Es liegt wahrscheinlich an einem grundlegenderen Problem. Vielleicht solltest du dich erst mal mit den primitiven Datentypen sowie mit String beschäftigen bevor du dich an die Applets ranwagst.

Der Compiler zeigt Dir im Prinzip ja schon wo der Hase vergraben ist.

Du kannst nicht einen String mit einem double vergleichen

Code:
if ("java.version" == 1.4)

das geht nicht.
 
Romsl hat gesagt.:
Es liegt wahrscheinlich an einem grundlegenderen Problem. Vielleicht solltest du dich erst mal mit den primitiven Datentypen sowie mit String beschäftigen bevor du dich an die Applets ranwagst.

Der Compiler zeigt Dir im Prinzip ja schon wo der Hase vergraben ist.

Du kannst nicht einen String mit einem double vergleichen

Code:
if ("java.version" == 1.4)

das geht nicht.
sorry, ja......Romsl hat´s besser formuliert.......

ein String ist in Java ein Objekt mit einer Struktur
und wenn du einfach 1.4 schreibst wandelt der Compiler das in den nativen Datentypen double um.......
und man kann kein komplexes Objekt mit einem nativen Typen vergleichen. Wenn, dann musst du eine Methode des Objektes aufrufen, die dir den Wert in einem nativen Datentyp zurückgibt.

z.B

Double.valueOf("1.4").doubleValue() == 1.4

da aber die System.getProperty("java.version") Methode einen String wie z.B "1.4.2_07" zurückgibt, kannst du den Wert nicht in ein Double umwandeln.
Eine NumberformatException wäre hier das Resultat.
 
Vielen Dank für eure Beiträge.
Nun habe ich folgendes vor. Die String Variable myVersion und ich 1.4.2_08 die in der If-Anweisung steht in eine numerische Variable umzuwandeln und sie dann miteinander zu vergleichen. Nun die Frage:
Wie geht das?

Ich hoffe ihr könnt mir auch da weiter helfen. :confused:
Danke. :)
 
Zurück