Java 写入文本文件问题
这是我的orderline.app代码Java 写入文本文件问题,java,text,file-io,Java,Text,File Io,这是我的orderline.app代码 public static void makeSandwich() { System.out.println("Enter First Name: "); String name = Scanner.next(); double price = sandwich.getBreadPrice() + sandwich.getMeatPrice() + sandwich.getVegPrice(); sandwich.setPr
public static void makeSandwich()
{
System.out.println("Enter First Name: ");
String name = Scanner.next();
double price = sandwich.getBreadPrice() + sandwich.getMeatPrice() + sandwich.getVegPrice();
sandwich.setPrice(price);
NumberFormat currency = NumberFormat.getCurrencyInstance();
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println(dateFormat.format(date) + " " + name + " " + sandwich.getBread() + " " + sandwich.getMeat() + " " + sandwich.getVegetables() + " " + currency.format(sandwich.getPrice()));
OrderLine.writeOrderLine(name, sandwich.getBread(), sandwich.getMeat(), sandwich.getVegetables(), sandwich.getPrice());
}
它根本不打印,但当我在orderline.java中的dateformat之前添加这一行“sandwich=new sandwich()”时,它可以工作,但它最终会给我空字符串,因为我想我正在创建一个新的三明治。如何调用我已经制作的三明治?在writeOrderLine函数中,您没有初始化三明治,但传递了三明治的所有属性,您可以按以下方式执行
public class OrderLine{
private static Sandwich sandwich = null;
public static void writeOrderLine(String name, String bread, String meat, String veg, double price)
{
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
try
{
File productsFile = new File("orderline.txt");
PrintWriter out = new PrintWriter(
new BufferedWriter(
new FileWriter(productsFile, true)));
out.print(dateFormat.format(date) + "\t");
out.print(name + "\t");
out.print(sandwich.getBread() + "\t");
out.print(sandwich.getMeat() + "\t");
out.print(sandwich.getVegetables() + "\t");
out.println(sandwich.getPrice() + "\t");
out.close();
}
catch (IOException e)
{
System.out.println(e);
}
}
}
或者你可以这样做
像这样打电话
public static void writeOrderLine(String name, String bread, String meat, String veg, double price)
{
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
try
{
File productsFile = new File("orderline.txt");
PrintWriter out = new PrintWriter(
new BufferedWriter(
new FileWriter(productsFile, true)));
out.print(dateFormat.format(date) + "\t");
out.print(name + "\t");
out.print(bread + "\t");
out.print(meat + "\t");
out.print(veg + "\t");
out.println(price+ "\t");
out.close();
}
catch (IOException e)
{
System.out.println(e);
}
}
并将功能更改为
OrderLine.writeOrderLine(name, sandwich);
好吃,三明治。您应该将
makeSandwich()
方法中的sandwich
实例作为参数传递给writeOrderLine()
,而不是三明治的各个组件。您能澄清一下吗?我以为我已经将三明治实例作为参数OrderLine.writeOrderLine(name,sandwich.getBread(),sandwich.getMeat(),sandwich.getvegets(),sandwich.getPrice())发送了;同样,这些是三明治的各个组成部分,而不是三明治本身。唯一的参数应该是Sandwich-Sandwich
。嗯,我刚刚尝试了OrderLine。writeOrderLine(Sandwich-Sandwich)它给了我找不到符号错误。您只需要将变量名传递给方法调用:OrderLine.writeOrderLine(Sandwich)
。您的方法声明应该是公共静态void writeOrderLine(三明治三明治)
。我建议您进一步研究/学习Java语法。
public static void writeOrderLine(String name, Sandwich sandwich)
{
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
try
{
File productsFile = new File("orderline.txt");
PrintWriter out = new PrintWriter(
new BufferedWriter(
new FileWriter(productsFile, true)));
out.print(dateFormat.format(date) + "\t");
out.print(name + "\t");
out.print(sandwich.getBread() + "\t");
out.print(sandwich.getMeat() + "\t");
out.print(sandwich.getVegetables() + "\t");
out.println(sandwich.getPrice() + "\t");
out.close();
}
catch (IOException e)
{
System.out.println(e);
}
}