Wie kann ich überprüfen, ob ein Wert vom Typ Integer ist?

Lesezeit: 4 Minuten

Benutzer-Avatar
Saturn

Ich muss prüfen, ob ein Wert eine ganze Zahl ist. Ich habe Folgendes gefunden: Wie kann ich überprüfen, ob der Eingabewert eine Ganzzahl oder ein Gleitkommawert ist?, aber wenn ich mich nicht irre, ist die Variable dort immer noch vom Typ double obwohl die Wert selbst ist in der Tat ein integer.

  • Wie kommst du auf den Input? Ist es eine Zeichenfolge?

    – Code-Lehrling

    24. September 2012 um 3:02 Uhr

  • @Code-Guru: Ich hätte gar nicht Input sagen sollen. Entschuldigung, ich meinte nur “was auch immer Wert”. Ich bearbeite jetzt.

    – Saturn

    24. September 2012 um 3:43 Uhr

  • Trotzdem brauchen wir noch mehr Details. Wie speichern Sie diesen Wert, den Sie überprüfen möchten?

    – Code-Lehrling

    24. September 2012 um 3:44 Uhr

  • @Code-Guru: Naja… Manchmal ist es eine Saite, aber manchmal möchte ich es mit einem Doppel versuchen. Ich wusste nicht, dass es einen Unterschied machen würde 🙁

    – Saturn

    24. September 2012 um 3:50 Uhr


  • @Voldemort-Programme in Java. Dies allein beantwortet viele Fragen, die ich zu den Potter-Büchern hatte.

    – james.garriss

    15. Juni 2018 um 14:31 Uhr

Benutzer-Avatar
Mudassir Hasan

Wenn der Eingabewert in einer anderen numerischen Form als integer vorliegen kann, überprüfen Sie dies mit

if (x == (int)x)
{
   // Number is integer
}

Wenn der Zeichenfolgenwert übergeben wird, verwenden Sie Integer.parseInt(string_var).
Bitte stellen Sie die Fehlerbehandlung mit try catch sicher, falls die Konvertierung fehlschlägt.

  • Hm parseint versuchen/fangen.

    – Ryan Amos

    24. September 2012 um 3:47 Uhr

Benutzer-Avatar
Ryan Amos

Wenn Sie eine Double/Float/Gleitkommazahl haben und sehen möchten, ob es sich um eine ganze Zahl handelt.

public boolean isDoubleInt(double d)
{
    //select a "tolerance range" for being an integer
    double TOLERANCE = 1E-5;
    //do not use (int)d, due to weird floating point conversions!
    return Math.abs(Math.floor(d) - d) < TOLERANCE;
}

Wenn Sie eine Zeichenfolge haben und sehen möchten, ob es sich um eine Ganzzahl handelt. Am besten nicht wegwerfen Integer.valueOf() Ergebnis:

public boolean isStringInt(String s)
{
    try
    {
        Integer.parseInt(s);
        return true;
    } catch (NumberFormatException ex)
    {
        return false;
    }
}

Wenn Sie sehen möchten, ob etwas ein Integer-Objekt ist (und daher eine int):

public boolean isObjectInteger(Object o)
{
    return o instanceof Integer;
}

  • Verwenden Sie ==, um Doubles zu vergleichen (wie in Ihrer isDoubleInt() Methode) ist wegen des Genauigkeitsverlustes gefährlich. Stattdessen sollten Sie so etwas tun Math.floor(d) - d < DELTA; wo DELTA auf einen sehr kleinen Wert eingestellt ist.

    – Code-Lehrling

    24. September 2012 um 3:54 Uhr


  • Dein Code ist falsch. Es sollte sein < TOLERANCE nicht > TOLERANCE.

    – bzw

    22. Januar 2017 um 17:30 Uhr

  • @andresp Danke! Fest.

    – Ryan Amos

    23. Januar 2017 um 19:42 Uhr

  • Gern geschehen. Nach 1E-5 fehlt immer noch ein Semikolon, aber das fällt leicht auf, wenn Sie versuchen zu kompilieren.

    – bzw

    24. Januar 2017 um 18:57 Uhr

  • Diese Antwort wird unterschätzt. Ich verwende es, um eine fundierte Vermutung anzustellen, ob ein Double (Apache POI behandelt Zahlen immer als Doubles) als Integer “beabsichtigt” angezeigt werden sollte, damit ich Gson verwenden kann (das meine Objektdarstellung betrachtet, die ich möchten Integer sein), um sie in JSON zu konvertieren.

    – O.K. dann

    30. Juni 2017 um 23:31 Uhr

Benutzer-Avatar
Gayan Weerakutti

if (x % 1 == 0)
    // x is an integer

Hier x ist ein numerisches Primitiv: short, int, long, float oder double

Benutzer-Avatar
Pshemo

Versuchen Sie es vielleicht so

try{
    double d= Double.valueOf(someString);
    if (d==(int)d){
        System.out.println("integer"+(int)d);
    }else{
        System.out.println("double"+d);
    }
}catch(Exception e){
    System.out.println("not number");
}

Aber alle Zahlen außerhalb des Integer-Bereichs (wie “-1231231231231231238”) werden als Doubles behandelt. Wenn Sie dieses Problem loswerden möchten, können Sie es auf diese Weise versuchen

try {
    double d = Double.valueOf(someString);
    if (someString.matches("\\-?\\d+")){//optional minus and at least one digit
        System.out.println("integer" + d);
    } else {
        System.out.println("double" + d);
    }
} catch (Exception e) {
    System.out.println("not number");
}

Sie sollten die verwenden instanceof Operator, um festzustellen, ob Ihr Wert Integer ist oder nicht;

Objekt Objekt = Ihr_Wert;

if(object instanceof Integer) {

Integer integer = (Integer) object ;

} else {
 //your value isn't integer
}

Benutzer-Avatar
Yasir Shabbir Choudhary

Hier ist die Funktion, um zu überprüfen, ob String Integer ist oder nicht?

public static boolean isStringInteger(String number ){
    try{
        Integer.parseInt(number);
    }catch(Exception e ){
        return false;
    }
    return true;
}

Benutzer-Avatar
Code-Lehrling

Um zu überprüfen, ob ein String Ziffern enthält, die eine Ganzzahl darstellen, können Sie verwenden Integer.parseInt().

Um zu überprüfen, ob ein Double einen Wert enthält, der eine ganze Zahl sein kann, können Sie verwenden Math.floor() oder Math.ceil().

1130630cookie-checkWie kann ich überprüfen, ob ein Wert vom Typ Integer ist?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy