无法读取文件并填写图表

时间:2014-03-08 23:58:49

标签: java

开发一个自上而下的设计并编写一个程序,以便逐个农场为合作农场小组制作美食爆米花生产条形图。

程序的输入是一系列数据集,每行一个,每组代表一个服务器场的生产。 每个数据集都包含一个服务器场的名称。后跟一个逗号和一个或多个空格,一个十进制数字,表示种植的土地,一个或多个空格,以及一个整数,表示为该农场生产的爆米花品脱罐数。 输出是一个条形图,用于标识每个农场并以每英亩的玉米品种显示其产量。 每个农场的输出是一行,农场的名称从一行的第一列开始,条形图从第30列开始。条形图中的每个标记代表每英亩25品脱的爆米花罐。 今年的生产目标是每英亩500罐。对于生产不符合此目标的农场,图表中应显示一个垂直条,并且对于生产量大于或等于每公顷500罐的农场,将使用特殊标记。 例如,给定输入文件

Orville’s Acres, 114.8 43801
Hoffman’s Hills, 77.2 36229
Jiffy Quick Farm, 89.4 24812
Jolly Good Plantation, 183.2 104570
Organically Grown Inc., 45.5 14683
输出将是:

              Popcorn Co-op
          Production in Hundreds
          of Pint Jars per Acre
Farm Name                 1   2   3   4   5   6
                         ---|---|---|---|---|---|
Orville's Acres         ***************    |
Hoffman's Hills         ****************** |
Jiffy Quick Farm        ***********        |
Jolly Good Plantation   *******************#**
Organically Grown Inc.  ************       |

我到目前为止,

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


public class Popcorn
{
  public static void main(String[] args) throws IOException
  {
    System.out.println("Enter file name: "); 
    Scanner in = new Scanner(System.in); 
    String file = in.next();  
    Scanner input = new Scanner(new FileReader(file)); 

    int jar;           
    double acre;
    String farm;
    String amt;


    System.out.println(); 
    System.out.printf("%30s",  "Popcorn Co-op"); 
    System.out.println();
    System.out.printf("\n%55s", "Production in Hundreds");
    System.out.printf("\n%56s", "of Pint Jars per Acre\n");
    System.out.printf("Farm Name %46s", "1   2   3   4   5   6\n");
    System.out.printf("%58s", "---|---|---|---|---|---|\n");


    while (input.hasNextLine())  
    {
      String inputFileLine = input.nextLine();

      if (inputFileLine.isEmpty()) 
      {
      }
      else
      {
        farm = inputFileLine.substring(0,inputFileLine.indexOf(',')); 
        String inputFileLine2 = inputFileLine.substring(inputFileLine.indexOf(',') + 1);
        Scanner line = new Scanner(inputFileLine2); 
        acre = line.nextDouble(); 
        jar = line.nextInt(); 
        System.out.println(farm); 
      } 
    }
  }
}

我完全不知道如何阅读文件并用星号填写图表。

2 个答案:

答案 0 :(得分:1)

由于这是一项明确的家庭作业,我将避免像其他人一样给你答案。如果你在线获得答案,你将永远不会学习如何编写代码,所以对于你自己的开发我只会尝试提供帮助。

你有什么

  • 您已经有一个系统可以读取文件并提取一些文件 信息并打印以格式化方式提取的信息。

你缺少什么

  • 你并没有完全掌握程序主要要求背后的数学或逻辑,即生成星号。

<强>指针

对于初学者,我会使用草稿纸并从逻辑上考虑这一点。你知道每个农场有多少英亩土地和生产了多少品脱的爆米花。因此,您知道每英亩生产的罐子数量。

为了满足要求,您需要将该数字除以25:

Each mark in the bar chart represents 25 pint jars of popcorn per acre.

所以你要知道有多少星星进入一个酒吧,你才能进行2次数学计算。一旦你知道了,我相信一个简单的循环应该可以帮助你完成这个项目。

最后,我认为您希望使用printf()打印出结果,因为它允许您格式化线条所需的灵活性。

答案 1 :(得分:0)

我正在做同样的任务......

我们有一个等式......

 int asterisks = jars/acres/25;

//然后使用for循环

for(int i = 1; i <= asterisks; i++)
{
System.out.println('*');`
}

然后按照细节进行工作......