2015-04-05 25 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

相关问题