首页 > 解决方案 > 使用 I/O 和字符串进行编程。| 基本库存标记计算器

问题描述

我正在编写一个程序,该程序从文件中读取库存项目并添加加价费用。我假设每一行都是正确的并且不使用任何验证。但是,我正在按照每一行的格式构建程序,希望是:名称数量成本标记。

成本是公司为商品支付的批发成本(每件)。加价是一个介于 1 和 100 之间的数字,表示确定零售成本的加价百分比。我正在尝试将所有输入数据以及价格、商品批发价值(数量 * 成本)、商品零售价值(数量 * 价格)输出到文件中。所有货币在输出时都应四舍五入到小数点后两位(printf)。该文件应使用 printf 语句以表格形式很好地格式化输出,并包含标题行。

目前,我正在尝试使用价值返回方法来确定零售价格,似乎我错过了什么?我不明白为什么即使outFile.print(Sect[0] + " " + Sect[1]);没有任何内容打印到输出文件?

(我的完整代码}

package pray;

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

public class Doitgoooo {

    public static void main(String[] args) throws FileNotFoundException {
        int Quantity;
        double Cost, Markup, FinCost=0;
        String Line, item1, item2, item3, item4;
        String[] Sect;
        Scanner inFile;
        PrintWriter outFile;

        System.out.println("(Basic) Inventory Program Starting. Opening file...");
        System.out.println("Please ensure data is entered per line in the format of: 'Name Quantity Cost Markup' ");
        inFile = new Scanner(new File("input.txt"));
        outFile = new PrintWriter(new File("output.txt"));


        while(inFile.hasNext()){

            Line = inFile.nextLine();
            Sect = Line.split(" ");
            if(Sect.length == 4) {
                item1 = Sect[0];
                item2 = Sect[1];
                item3 = Sect[2];
                item4 = Sect[3];
                Quantity = (int) Double.parseDouble(item2);
                Cost = Double.parseDouble(item3);
                Markup = Double.parseDouble(item4);

                double Value = Quantity * Cost;
                double ValueMarkup = Quantity * FinCost;

                outFile.print(Sect[0] + "  " + Sect[1]);
                outFile.printf("  %.2f  %.2f  %.2f  %.2f %.2f", Cost, Markup, FinCost, Value, ValueMarkup);


            }
            else {
                outFile.println("Line did not have 4 item(s)");
            }
        }
    }

            private void CalculateRetail(double Cost, double Markup) {

                double MarkPerct = Markup/100;
                double MarkAdd = MarkPerct * Cost;
                double FinCost = MarkAdd + Cost;


            }

}

{输入示例}

东西 22 15.65 45.00

Whatchacallit 59 67.99 25.5

小发明 10 100.00 40.00

{输出示例(不是我要打印的内容)}

项目 | 数量 | 成本 | 加价% | 价格(R)| 值 (W) | 值 (R)

东西| 22 | 15.65 | 45.00 | 22.69 | 344.30 | 499.24

Whatchacallit | 59 | 67.99 | 25.50 | 85.33 | 4011.41 | 5034.32

小发明 | 10 | 100.00 | 40.00 | 140.00 | 1000.00 | 1400.00

标签: javaif-statementmethodsfile-io

解决方案


如果这就是您的全部代码,那么您需要刷新和/或关闭文件以将数据写入磁盘。

完成编写后,在代码中添加 outFile.close()。


推荐阅读