开发一个自上而下的设计并编写一个程序,以便逐个农场为合作农场小组制作美食爆米花生产条形图。
程序的输入是一系列数据集,每行一个,每组代表一个服务器场的生产。 每个数据集都包含一个服务器场的名称。后跟一个逗号和一个或多个空格,一个十进制数字,表示种植的土地,一个或多个空格,以及一个整数,表示为该农场生产的爆米花品脱罐数。 输出是一个条形图,用于标识每个农场并以每英亩的玉米品种显示其产量。 每个农场的输出是一行,农场的名称从一行的第一列开始,条形图从第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);
}
}
}
}
我完全不知道如何阅读文件并用星号填写图表。
答案 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('*');`
}
然后按照细节进行工作......