2015-04-05 26 views
0

我正在從文件中讀取文本,然後創建另一個包含這些文本的文件,但是當我調用函數.format時,無論我做什麼,都會持續加下劃線。 這是我的代碼:爲什麼我的.format錯誤? JAVA文件

package number3; 

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Formatter; 
import java.util.Scanner; 

public class ReadFileCarData { 

private static Scanner Infile; 
private static Formatter OutFile; 

public static void main(String[] args) throws FileNotFoundException{ 

    try 
    { 
     Infile = new Scanner(new File("cardata.txt")); 
     OutFile = new Formatter("cardatasold.txt"); 
    } 

    catch(FileNotFoundException fnfe) 
    { 
     System.out.println("File not found"); 
     System.exit(0); 
    } 

    System.out.println("Plate Brand Model Price Power Status"); 

    while(Infile.hasNext()) 
    { 
     String plate,brand,model,status; 
     int price,power; 

     plate = Infile.next(); 
     brand = Infile.next(); 
     model = Infile.next(); 
     price = Infile.nextInt(); 
     power = Infile.nextInt(); 
     status = Infile.next(); 

     while(status.equals("Sold")) 
     { 
      try 
      { 
       OutFile.format("%s %s %s %d %d \r\n",plate,brand,model,price,power); 
      } 
      catch(Exception e) 
      { 
       System.out.print("Error"); 
      } 

     } 
    } 

    Infile.close(); 
    OutFile.close(); 
} 

} 

該錯誤消息表示:

方法格式(區域設置,字符串,對象[])中的類型格式化不適用於參數(字符串,字符串,字符串,字符串,int,int)

我不明白爲什麼,因爲根據我我寫了正確的格式。 任何想法我做錯了什麼?謝謝。

+3

「根據我」 - 你錯了。編譯器總是正確的。如果你馬上接受這個事實,你會更快。 – duffymo 2015-04-05 13:46:37

+1

你正在編譯什麼java版本。整數對象應該被自動裝箱。 – 2015-04-05 13:54:58

回答

3

它工作正常的我。這是輸出:

Plate Brand Model Price Power Status 

您遇到的問題是,你的編譯器無法識別的方法VAR-ARGS(並認爲它只是一個Object[]),可能甚至不autobox整數。這兩個都是Java 1.5的特性。

這可能意味着您的IDE /編譯器設置錯誤。打開項目的設置並查找目標兼容性,生成的.class兼容性或類似的東西,並將其從1.4改爲1.7/1.8。

+0

你是對的這是一個兼容性錯誤。我已經把它設置爲1.7,現在它工作正常。 – 2015-04-05 14:26:39

1

您可能想檢查您的Java版本。
與此同時,您可以嘗試使用此功能。

OutFile.format(Locale.getDefault(),"%s %s %s %d %d \r\n", new Object[]{plate,brand,model,price,power}); 

希望它幫助;)

+0

雖然這是真的,但它並不exaplain爲什麼他應該檢查他的版本。 Formatter自1.5.0版本開始使用Java,自1.5.0版本以來var-args(和autoboxing)也一直存在。他的代碼應該工作得很好。 – 2015-04-05 14:00:32

+0

也許與他的IDE設置有關,也許他選擇了1.4兼容性。正如OP所說,檢查javac版本。 – 2015-04-05 14:02:46

相關問題