Java 我需要帮助读取文本文件以打印到控制台

Java 我需要帮助读取文本文件以打印到控制台,java,Java,我很难弄明白它应该打印txt文件的内容,但我无法打印它 这是我应该得到的输出 成分-所需量-库存量 小苏打4.50小苏打4.00小苏打 糖(糖)(糖)(糖)(糖)(糖)6.50(糖)(糖)(糖)(糖)3.20 import java.util.Scanner; import java.lang.*; import java.io.FileReader; import java.io.IOException; import java.io.*; public class Lab8b { pu

我很难弄明白它应该打印txt文件的内容,但我无法打印它

这是我应该得到的输出

成分-所需量-库存量

小苏打4.50小苏打4.00小苏打

糖(糖)(糖)(糖)(糖)(糖)6.50(糖)(糖)(糖)(糖)3.20

import java.util.Scanner;
import java.lang.*;
import java.io.FileReader;
import java.io.IOException;
import java.io.*;

public class Lab8b {

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

  Scanner scan = new Scanner(System.in);
  System.out.print("Enter file name : ");
  String filename = scan.nextLine();
  Scanner fileScan = new Scanner(new File(filename));

  while (fileScan.hasNext()) {
   String name = fileScan.nextLine();
   String ingredientName = fileScan.nextLine();
   double amountNeeded = Double.parseDouble(fileScan.nextLine());
   double amountInStock = Double.parseDouble(fileScan.nextLine());

   if (amountNeeded > amountInStock) {

    System.out.printf("Ingredient \t Amount Needed \t Amount in Stock");
    System.out.println();
    System.out.printf("%10s", ingredientName);
    System.out.printf("%8.2f", amountNeeded);
    System.out.printf("%16.2f", amountInStock);
   } //end if 

   if (amountNeeded <= amountInStock) {
    System.out.println("Nothing");

   } //end while
  } //end if
 } //end main
} //end class
import java.util.Scanner;
导入java.lang.*;
导入java.io.FileReader;
导入java.io.IOException;
导入java.io.*;
公共类Lab8b{
公共静态void main(字符串[]args)引发FileNotFoundException{
扫描仪扫描=新扫描仪(System.in);
System.out.print(“输入文件名:”);
字符串文件名=scan.nextLine();
Scanner fileScan=new Scanner(新文件(文件名));
while(fileScan.hasNext()){
String name=fileScan.nextLine();
String ingredientName=fileScan.nextLine();
double amountNeeded=double.parseDouble(fileScan.nextLine());
double-amountinstack=double.parseDouble(fileScan.nextLine());
如果(需要的数量>数量){
System.out.printf(“配料\t需要量\t库存量”);
System.out.println();
System.out.printf(“%10s”,IngreditName);
System.out.printf(“%8.2f”,所需数量);
System.out.printf(“%16.2f”,amountinstack);
}//如果结束,则结束

如果(amountNeeded以下是我在代码中发现的问题:

  • 您创建了一个
    while
    循环来读取文件的内容,但您不使用它做任何事情
  • 需要将代码包装在try-catch中,因为可能会引发
    FileNotFoundException
  • 您试图从
    filename
    调用
    readLine()
    ,而不是
    fileScan
  • 我假设您需要将
    amountNeeded
    amountnstock
    作为双倍,即使您不使用它们进行任何计算。如果不是这样,您可以将它们作为字符串保留,而不是解析

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("Enter file name : ");
        String filename = scan.nextLine();
        scan.close();
        Scanner fileScan = null;
    
        try {
            fileScan = new Scanner(new File(filename));
    
            while (fileScan.hasNext()) {
                String ingredientName = fileScan.nextLine();
                double amountNeeded = Double.parseDouble(fileScan.nextLine());
                double amountInStock = Double.parseDouble(fileScan.nextLine()); 
    
                System.out.printf("Ingredient \t Amount Needed \t Amount in Stock\n");
                System.out.printf("%10s", ingredientName);
                System.out.printf("%8.2f", amountNeeded);
                System.out.printf("%16.2f", amountInStock);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
    

    请不要更正代码中的错误,因为这会迫使我定期更新我的答案。问题的目的是显示手头的问题。如果我的答案对您有帮助,如果您接受我的答案,我将不胜感激。请阅读:欢迎这样做!当您提出问题时,请尝试添加最低内容:输入样本,预期输出样本e、 你尝试了什么,研究了什么,你在哪里卡住了。你能给我们看一下你的输入(样本)看看哪里出了问题吗?你得到了什么错误?