2014-01-25 3 views
0
double [] temperature = new double[length];  
// After this, the doubles are added to the array after being read from a file.  
for (int i : temperature) 
{ 
    System.out.printf("%5s" , i.toString()); 
} 

Во время цикла, я получаю ошибку «возможную потерю точности требуемого междунар найдено: двойную» вокруг «температуры» части цикла. Как создать цикл for для печати значений удвоений в этой строке?Потеря точности при для цикла [массивов]

+0

Использовать 'double' вместо' int'? –

+1

'i.toString()'? : | – amit

ответ

0

вы должны использовать

for (double i : temperature) 
+0

Это еще не скомпилируется. Ему нужно еще одно изменение. –

1

изменения:

for(int i : temperature) 

к

for(double i : temperature) 

Обратите внимание, что temperature является массивом double с и не int s.

Как скомпилировать ваш код? Вы уверены, что i.toString() не дает вам никаких ошибок? Достаточно напечатать i.

+0

Спасибо. Я думал, что int в начале был для «я», а не для массива. – user3236383

+0

@ user3236383 Ну, это так. Массив является массивом 'double' и остается одним. Но когда вы делаете 'i'' 'int 'и извлекаете двойники из массива и в' i', вы обрезаете все после десятичной точки. – delnan

0

Ну, проблема в том, что ваш массив полон двойников, и вы рассматриваете их как ints. Скажем что-то вроде for(double i:temperature).

+0

Это еще не скомпилируется. Ему нужно еще одно изменение. –

+0

@DavidWallace Я знаю, что он не решает проблему toString(), но он решает проблему, о которой он просил. –

+0

Нет. Его вопрос: «Как создать цикл for для печати значений удвоений в этой строке?». Этот ответ не сделает этого для него. Я действительно должен был это сделать (и ответ Кевина тоже), но сегодня у меня хорошее настроение! –

0

Я бы рекомендовал поддерживать температуру как double, а не преобразовывать их в int. Кроме того, вместо использования toString() для преобразования вы можете указать в строке формата, как форматировать double. Например, если вы хотите double значения напечатанного до двух знаков после запятой, вы могли бы написать

for (double eachTemperature : temperature) { 
    System.out.format("%.2f%n", eachTemperature); 
} 

Более подробную информации о различных строках формата вы можете использовать это в http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html

Смежные вопросы