2015-12-02 2 views
0

У меня проблема с printf. Я хочу распечатать два sepreate массива двойников и ограничить десятичное место на один, но я получаю сообщение об ошибке. Первый массив будет печатать с температурой по Цельсию, а второй массив получит эти значения и изменит их на Farenheit, который также будет напечатан на экране. Я пытаюсь реализовать метод printf, когда цифры распечатываются. Единственная проблема, о которой я могу думать, это то, что я ссылаюсь на значение индекса в массиве, а не на двойное.Printf не работает для массива двухместных номеров

import java.util.Scanner; 
public class tempOne { 
    public static void main (String [] args){ 
     Scanner sc = new Scanner(System.in); 
     double [] temp1 = new double [10]; 
     double [] temp2 = new double[10]; 
     System.out.println("Please enter 10 temperatures in Celsius: "); 

     for (int index = 0; index<temp1.length;index++)//Gets temperatures in Celsius. 
     { 
      temp1[index]=sc.nextDouble(); 
     } 

     for (int index = 0; index<temp1.length;index++)//Prints temperatures in Celsius. 
     { 
      System.out.printf("Temperatures in Celsius: %.1f", temp1[index] + " "); 
     } 

     for (int index = 0; index<temp1.length;index++)//Copies array 1 into array 2. 
     { 
      temp2[index]=temp1[index]; 
     } 

     System.out.println(""); 

     for (int index = 0; index<temp1.length;index++)//Changes values in array 2 to Farenheit. 
     { 
      temp2[index] = ((temp1[index]*9/5)+32); 
     } 

     for (int index = 0; index<temp1.length;index++) 
     { 
      System.out.printf("Temperatures in Farenheit: %.1f", temp2[index] + " ");//Prints array 2. 
     } 

    } 
} 

И вот результат:

Please enter 10 temperatures in Celsius: 
20.22 
Temperatures in Celsius: Exception in thread "main" java.util.IllegalFormatConversionException: f != java.lang.String 
    at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4302) 
    at java.util.Formatter$FormatSpecifier.printFloat(Formatter.java:2806) 
    at java.util.Formatter$FormatSpecifier.print(Formatter.java:2753) 
    at java.util.Formatter.format(Formatter.java:2520) 
    at java.io.PrintStream.format(PrintStream.java:970) 
    at java.io.PrintStream.printf(PrintStream.java:871) 
    at tempOne.main(tempOne.java:16) 

Кто-нибудь есть какие-либо идеи о том, что происходит здесь?

ответ

2

Удалить + " " в конце вашего printf s.

%.1f означает «распечатать значение поплавка с одним десятичным знаком», но с + " " вы преобразовываете это число в String.

+0

Большое спасибо! – Scoot

+0

@Scoot не стесняйтесь принимать это как ответ, если он поможет вам – Buddy

2

Вы хотите форматировать double, и вместо этого вы передаете параметр String. Попробуйте (+ ""):

System.out.printf("Temperatures in Farenheit: %.1f", temp2[index]) 
Смежные вопросы