Hoe kan ik controleren of een waarde van het type Integer is?

Ik moet controleren of een waarde een geheel getal is. Ik heb dit gevonden: Hoe te controleren of de invoerwaarde een geheel getal is of float?, maar als ik me niet vergis, is de variabele daar nog steeds van het type doublehoewel de waardezelf is inderdaad een integer.


Antwoord 1, autoriteit 100%

Als de invoerwaarde een andere numerieke vorm dan een geheel getal kan zijn, controleer dan met

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

Als een tekenreekswaarde wordt doorgegeven, gebruik dan Integer.parseInt(string_var).
Zorg voor foutafhandeling met try-catch voor het geval de conversie mislukt.


Antwoord 2, autoriteit 26%

Als je een double/float/floating point getal hebt en je wilt zien of het een geheel getal is.

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;
}

Als je een string hebt en wilt zien of het een geheel getal is. Gooi het resultaat Integer.valueOf()bij voorkeur niet weg:

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

Als je wilt zien of iets een Integer-object is (en dus een intomhult):

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

Antwoord 3, Autoriteit 14%

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

Hier xis een numerieke primitieve: short, int, long, floatof double


Antwoord 4, Autoriteit 9%

U moet de instanceofgebruiken om te bepalen of uw waarde integer is of niet;

Objectobject = uw_value;

if(object instanceof Integer) {
Integer integer = (Integer) object ;
} else {
 //your value isn't integer
}

Antwoord 5, Autoriteit 8%

Probeer op deze manier

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");
}

Maar alle nummers buiten gehele getallen variëren (zoals “-1231231231231231238”) worden als tweepersoons behandeld. Als u van dat probleem kwijt wilt, kunt u het op deze manier proberen

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");
}

Antwoord 6, Autoriteit 5%

Hier is de functie om te controleren of de reeks integer is of niet?

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

Antwoord 7

Om te controleren of een tekenreeks een cijfer bevat dat een geheel getal voorstelt, kunt u Integer.parseInt()gebruiken.

Om te controleren of een double een waarde bevat die een geheel getal kan zijn, kunt u Math.floor()of Math.ceil()gebruiken.


Antwoord 8

dit is de kortste manier die ik ken met negatieve gehele getallen ingeschakeld:

Object myObject = "-1";
if(Pattern.matches("\\-?\\d+", (CharSequence) myObject);)==true)
{
    System.out.println("It's an integer!");
}

En dit is de manier met negatieve gehele getallen uitgeschakeld:

Object myObject = "1";
if(Pattern.matches("\\d+", (CharSequence) myObject);)==true)
{
    System.out.println("It's an integer!");
}

Antwoord 9

Je moet eerst controleren of het een nummer is. Als dit het geval is, kunt u de methode Math.Roundgebruiken. Als het resultaat en de oorspronkelijke waarde gelijk zijn, is het een geheel getal.


Antwoord 10

Dit kan werken:

int no=0;
try
{
    no=Integer.parseInt(string);
    if(string.contains("."))
    {
        if(string.contains("f"))
        {
            System.out.println("float");
        }
        else
            System.out.println("double");
    }
}
catch(Exception ex)
{
    Console.WriteLine("not numeric or string");
}

Antwoord 11

Probeer dit codefragment

private static boolean isStringInt(String s){
    Scanner in=new Scanner(s);
    return in.hasNextInt();
}

Antwoord 12

U kunt modulus % gebruiken, de oplossing is zo eenvoudig:

import java.text.DecimalFormat;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    System.out.println("Enter first number");
    Double m = scan.nextDouble();
    System.out.println("Enter second number");
    Double n= scan.nextDouble();
    if(m%n==0) 
    {
        System.out.println("Integer");
    }
    else
    {
        System.out.println("Double");
    }
}
}

Other episodes