Подтвердить что ты не робот

Как проверить, имеет ли значение тип Integer?

Мне нужно проверить, является ли значение целым. Я нашел это: Как проверить, является ли входное значение целым или плавающим?, но если я не ошибаюсь, переменная есть тип double, хотя само значение действительно является integer.

4b9b3361

Ответ 1

Если входное значение может быть в числовой форме, отличной от целого, проверьте

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

Если передается строковое значение, используйте Integer.parseInt(string_var). Пожалуйста, убедитесь, что обработка ошибок с использованием try catch в случае неудачного преобразования.

Ответ 2

Если у вас есть номер с двойной/плавающей точкой/с плавающей запятой и вы хотите увидеть, целое ли оно.

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

Если у вас есть строка и вы хотите увидеть, является ли это целым числом. Не выбрасывайте результат Integer.valueOf():

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

Если вы хотите увидеть, что-то является объектом Integer (и, следовательно, обертывает int):

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

Ответ 3

Попробуйте, пожалуйста, таким образом

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

Но все числа вне диапазона целых чисел (например, "-1231231231231231238" ) будут рассматриваться как двойные. Если вы хотите избавиться от этой проблемы, вы можете попробовать это так.

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

Ответ 4

Вы должны использовать оператор instanceof, чтобы определить, является ли ваше значение Integer или нет;

Объект object = your_value;

if(object instanceof Integer) {

Integer integer = (Integer) object ;

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

Ответ 5

Вот функция для проверки, является ли String целым или нет?

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

Ответ 6

Это может работать:

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

Ответ 7

Чтобы проверить, содержит ли строка символ цифры, представляющий целое число, вы можете использовать Integer.parseInt().

Чтобы проверить, содержит ли double значение, которое может быть целым числом, вы можете использовать Math.floor() или Math.ceil().

Ответ 8

Вам нужно сначала проверить, является ли это номером. Если это так, вы можете использовать метод Math.Round. Если результат и исходное значение равны, то это целое число.

Ответ 9

это самый короткий путь, который я знаю с включенными отрицательными целыми числами:

Object myObject = "-1";

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

И так отключается отрицательное число целых чисел:

Object myObject = "1";

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

Ответ 10

Попробуйте этот фрагмент кода

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

Ответ 11

Возможно, этот маленький класс помогает. Сначала я хотел перейти к следующей строке каждый второй цикл, пытаясь сделать это, проверяя, был ли float, используемый для цикла, с целым числом, если делится на 2. В конце он дал мне этот код:

public class Test {

    private static int sequencesPerLine = 20;
    private static int loops = 6400;

    private static long number = 999999999999999999L;


    public static void main(String[] args) {

        for (float i=0; i<loops; i++) {
        int integer = (int) i / sequencesPerLine;

        if (i / sequencesPerLine == integer) {
            System.out.print("\n");
        }
        System.out.print(number);
        }
    }
}

sequencesPerLine - сколько раз печатать number перед тем, как перейти к следующей строке. Изменение sequencesPerLine до 2 даст результат, который я изначально искал.

Ответ 12

Вы можете использовать модуль%, решение так просто:

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


}
}