2015-11-17 3 views
0

Итак, я не уверен, схожу ли я с ума или что, но по существу у меня есть файл с целыми числами (1 2 3 4 5 6) и т. Д. Я читаю в этом файл со Сканером, а затем хотите определить, действительно ли они являются целыми числами, используя File.nextDouble()% 1. Который должен привести к 0.0, если это целое число.эквивалентность модуля Java со сканером и файлами

Heres основной код:

public static void range(Scanner inputF){ 
    double hold = 0.0; 

    while (inputF.hasNextInt()) { 
     hold = inputF.nextDouble(); 
     if(hold % 1 != 0.0){ 
      System.out.println("Invalid"); 
      System.exit(0); 
     } 
    } 
} 

И то, что происходит это "если" заявление догоняет даже если 1% 1 = 0;

Спасибо!

+4

* хочу, чтобы определить, если они на самом деле являются целыми числами, используя File.nextDouble() * - 'hasNextInt()' уже проверяет для целых чисел. – TheLostMind

+0

Возможно, вам следует добавить инструкцию print после '' nextDouble' для отладки. Когда я запускаю этот файл с файлом, имеющим 1-6, я не вхожу в 'if'. – gonzo

ответ

0

Для двух типов данных, таких как переменная hold - не используйте операторы сравнения, такие как == или !=. По этой причине см. here и here.

Вы можете сделать что-то вроде ниже -

double tolerance = 0.00000001d; 
double mod = hold % 1; 
if(mod <= tolerance) { 
    ...//Do your operations. 
} 
Смежные вопросы