2012-06-24 17 views
5

Tôi đang viết một chương trình cho phép các bài đọc nhiệt độ người dùng nhập vào 6, và sau đó một trong haiChuỗi.Định dạng cho làm tròn, không thể định vị lỗi nguồn chuyển đổi định dạng bất hợp pháp?

  1. trở lại các giá trị ban đầu cao nhất + phiên bản celcius
  2. trở lại các giá trị ban đầu + chuyển đổi thành phiên bản C.

mã nơi các giá trị mảng được thiết lập là ở đây:

System.out.print("Enter Temperature:\t"); //Get the count... 
     Temp = LocalInput.nextInt(); 
     WeatherSpots[K].CatchCount = Temp; 

được thông báo lỗi mà tôi nhận được là này

java.util.IllegalFormatConversionException: f != java.lang.Integer 
at java.util.Formatter$FormatSpecifier.failConversion(Unknown Source) 
at java.util.Formatter$FormatSpecifier.printFloat(Unknown Source) 
at java.util.Formatter$FormatSpecifier.print(Unknown Source) 
at java.util.Formatter.format(Unknown Source) 
at java.util.Formatter.format(Unknown Source) 
at java.lang.String.format(Unknown Source) 
at p2list.WeeklyReport(p2list.java:102) 
at p2list.main(p2list.java:33)" 

tôi tôi cũng đã tìm thấy những cụm từ chính xác mà mang lại cho tôi sự cố:

String.format("%.2d", (WeatherSpots[K].CatchCount - 32) * 5/9)" 

tôi biết rằng lỗi xảy ra khi tôi "%._" không có sự xác định đúng, nhưng tất cả các biến và mảng của tôi là trong int, vì vậy d nên làm việc

đây là phần còn lại của các mã:

Đây là cách tôi đặt mảng 1:

private static WeatherLocation[] WeatherSpots = new WeatherLocation[6];" 

Đây là lớp học mà mảng sau sử dụng

public class WeatherLocations extends WeatherLocation { 
    public String LocationID; 
    public Integer CatchCount;" 

    arrays = WeatherSpots.LoccationID/Catchcount" 

Đây là nơi các mảng catchcount được thiết lập với nhiệt độ người dùng nhập vào

int K; 
for(K = 0 ; K < 6 ; K++){ 
    System.out.print("Enter Temperature:\t"); 
    Temp = LocalInput.nextInt(); 
    WeatherSpots[K].CatchCount = Temp; 

Đây là phương pháp mà tôi cố gắng để gọi trên WeatherSpots[K].catchcount giá trị chuyển đổi sang celcius

int K= 0; 
for(K = 0 ; K < 6 ; K++){ 
    System.out.println("" + WeatherSpots[K].LocationID +"\t\t" + WeatherSpots[K].CatchCount + "\t\t" + String.format("%.2f", (WeatherSpots[K].CatchCount - 32) * 5/9)); 

gì sẽ gây ra lỗi, nếu mảng và biến tôi là các loại thích hợp cho việc sử dụng string.format?

Trả lời

8

Trong

String.format("%.2f", (WeatherSpots[K].CatchCount - 32) * 5/9) 

bạn đang cố gắng in một int với một định dạng cho double s hoặc float s. Điều đó gây ra IllegalFormatConversionException: f != java.lang.Integer. Kể từ khi phân chia số nguyên truncates anyway, nó không phải là rất hữu ích để in một số nguyên với hai vị trí sau dấu thập phân. Chỉ cần chia cho số dấu phẩy động 9.0 thay vì số int 9 để nhận số dấu phẩy động mà bạn có thể định dạng với %.2f.

Trong

String.format("%.2d", (WeatherSpots[K].CatchCount - 32) * 5/9) 

định dạng của bạn %.2d là không hợp lệ vì nó không có ý nghĩa để in số nguyên với những nơi sau dấu thập phân.

+0

cảm ơn!giải quyết mọi thứ – user1476390

+1

@ user1476390: Vì câu trả lời này đã giải quyết được vấn đề của bạn, bạn nên bỏ phiếu cho câu trả lời của Daniel (như tôi đã làm) bằng cách nhấp vào mũi tên lên phía bên trái của nó, và sau đó bạn nên chấp nhận nó bằng cách nhấp vào dấu kiểm lớn ở bên trái của nó. –

+0

oh okay. xin lỗi daniel, d tôi chưa thể bỏ phiếu – user1476390

Các vấn đề liên quan