![](/img/trans.png)
[英]error java The method combinationSum(int[], int, List<Integer>) in the type Solution is not applicable for the arguments (int[], int, boolean)
[英]Java Writer error: The method write(char[], int, int) in the type Writer is not applicable for the arguments (int, double, int, String)
我正在尝试将我的 Java 程序的 output 写入文件,但我无法弄清楚我遇到的错误。 这是我的代码:
import java.io.*;
import java.nio.file.Paths;
import java.util.*;
public class Program10
{
public static Writer wr;
public Scanner input;
static ArrayList<Household> surveyData = new ArrayList<Household>();
static double avg;
public static void main(String[] args)
{
Program10 obj = new Program10();
developerInfo();
obj.readFile();
obj.outputRecords(surveyData);
obj.calculateAverage(surveyData);
obj.exceedsAverage(surveyData);
obj.belowAverage(surveyData);
obj.belowAveragePercent(surveyData);
//wr.close();
}
//**************************************************************
//
// Method: readFile
//
// Description: reads the file and calculates average income
//
// Parameters: None
//
// Returns: N/A
//
//**************************************************************
public void readFile()
{
// Open the input file
try
{
input = new Scanner(Paths.get("Program10.txt"));
System.out.println("Input file open.");
}
catch (IOException e)
{
e.printStackTrace();
}
// Open the output file
try
{
**wr = new FileWriter("Program10-output.txt");**
System.out.println("Output file open.");
}
catch(IOException e)
{
System.err.println("Error handling output file. Terminating...");
System.exit(1);
}
// Create ArrayList of Household Objects
while (input.hasNext())
{
//reading each line of the input file
int id = input.nextInt();
double income = input.nextDouble();
int members = input.nextInt();
String state = input.nextLine();
//creating the object by using the constructor
Household house = new Household(id, income, members, state);
//storing to Household variable
surveyData.add(house);
**wr.write(house.getID(), house.getIncome(), house.getMembers(), house.getState());**
wr.write("\r\n");
}
}
//***************************************************************
//
// Method: outputRecords
//
// Description: Prints each Household record in four (4) columns
//
// Parameters: ArrayList<Household> surveyData
//
// Returns: N/A
//
//**************************************************************
public static void outputRecords(ArrayList<Household> surveyData)
{
// Outputting ID, Income, Members & State in four (4) column format
try
{
System.out.printf("%nIdentification\tIncome\t\tMembers\t\tState");
wr.write("%nIdentification\tIncome\t\tMembers\t\tState");
System.out.println();
wr.write("\r\n");
for (int i = 0; i < surveyData.size(); i++)
{
Household data = surveyData.get(i);
System.out.printf("%s%18s%11s%20s\n", data.getID() , data.getIncome() , data.getMembers(), data.getState());
wr.write("%s%18s%11s%20s\n", data.getID() , data.getIncome() , data.getMembers(), data.getState());
}
}
catch(IOException e)
{
e.printStackTrace();
}
}
我的错误是: Writer 类型中的方法 write(String, int, int) 不适用于 arguments (String, int, double, int, String)
当我第一次将其定义为write(char[], int, int)时,我不明白它在哪里被定义为: wr = new FileWriter("Program10-output.txt");
怎么定义 writer object 以便将家庭 object 格式(int,double,int,String)写入它?
您正在尝试以使用printf
的方式使用write
,但不能以这种方式使用write
。 它不支持格式字符串。 你如何声明wr
并不重要。 问题不在声明中。 Writer
就是没有这个功能。
如果要使用格式,一种方法是使用String.format
首先创建格式化字符串,然后将格式化字符串传递给write
。
String formattedString = String.format("%s%18s%11s%20s\n", data.getID() , data.getIncome() , data.getMembers(), data.getState());
wr.write(formattedString);
String.format
就像printf
一样工作,除了它返回格式化的字符串,而不是将其打印到控制台。
您似乎在其他地方使用过格式字符串。 您应该更改那些使用String.format
的地方。
FileWriter 上的 write() 方法继承自 OutputStreamWriter。 您可以在此处查看文档。 https://docs.oracle.com/javase/7/docs/api/java/io/OutputStreamWriter.html#write(char[],%20int,%20int)
write() 只有 3 个选项可以将字符串写入文件。 我不确定你写信给家里 object 是什么意思?
也许您可能希望覆盖您的家庭 object 中的 toString 方法,在这种情况下,您可以将其作为字符串写入文件。
您可以使用 String.format() 指定数据格式并将字符串写入写入器。
import java.io.*;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Scanner;
public class Program10 {
public static Writer wr;
public Scanner input;
static ArrayList<Household> surveyData = new ArrayList<Household>();
static double avg;
public static void main(String[] args) throws IOException {
Program10 obj = new Program10();
// developerInfo();
obj.readFile();
obj.outputRecords(surveyData);
// obj.calculateAverage(surveyData);
// obj.exceedsAverage(surveyData);
// obj.belowAverage(surveyData);
// obj.belowAveragePercent(surveyData);
// wr.close();
}
// **************************************************************
//
// Method: readFile
//
// Description: reads the file and calculates average income
//
// Parameters: None
//
// Returns: N/A
//
// **************************************************************
public void readFile() throws IOException {
// Open the input file
try {
input = new Scanner(Paths.get("Program10.txt"));
System.out.println("Input file open.");
} catch (IOException e) {
e.printStackTrace();
}
// Open the output file
try {
wr = new FileWriter("Program10-output.txt");
System.out.println("Output file open.");
} catch (IOException e) {
System.err.println("Error handling output file. Terminating...");
System.exit(1);
}
// Create ArrayList of Household Objects
while (input.hasNext()) {
// reading each line of the input file
int id = input.nextInt();
double income = input.nextDouble();
int members = input.nextInt();
String state = input.nextLine();
// creating the object by using the constructor
Household house = new Household(id, income, members, state);
// storing to Household variable
surveyData.add(house);
String formattedString = String.format("%s%18s%11s%20s\n", house.getId(), house.getIncome(),
house.getMembers(), house.getState());
wr.write(formattedString);
wr.write("\r\n");
}
}
// ***************************************************************
//
// Method: outputRecords
//
// Description: Prints each Household record in four (4) columns
//
// Parameters: ArrayList<Household> surveyData
//
// Returns: N/A
//
// **************************************************************
public static void outputRecords(ArrayList<Household> surveyData) {
// Outputting ID, Income, Members & State in four (4) column format
try {
System.out.printf("%nIdentification\tIncome\t\tMembers\t\tState");
wr.write("%nIdentification\tIncome\t\tMembers\t\tState");
System.out.println();
wr.write("\r\n");
for (int i = 0; i < surveyData.size(); i++) {
Household data = surveyData.get(i);
System.out.printf("%s%18s%11s%20s\n", data.getId(), data.getIncome(), data.getMembers(),
data.getState());
wr.write(String.format("%s%18s%11s%20s\n", data.getId() , data.getIncome(), data.getMembers(),
data.getState()));
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.