Мне нужно проверить, является ли значение целым. Я нашел это: Как проверить, является ли входное значение целым или плавающим?, но если я не ошибаюсь, переменная есть тип double
, хотя само значение действительно является integer
.
Как проверить, имеет ли значение тип Integer?
Ответ 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");
}
}
}