2015-03-07 2 views
-1

Разработки сверху вниз дизайна и написать программу, чтобы произвести гистограмму продукции для гурманов попкорна для кооперативной фермы группы на ферм по внутрихозяйственной основе.Проблемы с производством Ферма уступкем программирования

Ввод в программу представляет собой серию наборов данных, по одной в каждой строке, с каждый набор, представляющий собой производство для одной фермы. Каждый набор данных состоит из имени фермы. Затем следуют запятая и одно или несколько пробелов, десятичное число, представляющее акров, высаженное, одно или несколько пробелов и целое число, представляющее число пинтов банок попкорна, произведенных для этой фермы. Выход представляет собой гистограмму, которая идентифицирует каждую ферму и отображает ее продукцию в пинтах кукурузы на акр. Вывод представляет собой одну строку для каждой фермы с именем фермы, начинающейся в первом столбце строки, и гистограммой, начинающейся с в столбце 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. ************ | 

Это код, который я уже он работает и печатает правильный формат, но он имеет ошибка исключения. Я пытаюсь разбить строку на имя фермы, а затем на два акра и, наконец, на int jars. Входной файл

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 

Причина всех пробелов заключается в том, что я хочу, чтобы он просто читал строки с данными.

Вот мой исходный код

import java.util.Scanner; 
import java.io.*; 

public class Popcorn 
{ 

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

printHeading(); 

System.out.print("Input file name you want to read from: "); 

Scanner in = new Scanner(System.in);  

String fileName = in.next(); //declares fileName a string that uses in as input 

Scanner input = new Scanner(new FileReader(fileName)); //Declares input as the fileName and reads the file in 

int jars; 
double acres; 
String amount; 
String farmName; 
System.out.println(); 
System.out.println("\t\t\tPopcorn Co-op"); 
System.out.println(); 
System.out.println("\t\t\t\tProduction in Hundreds"); 
System.out.println("\t\t\t\tof Pint Jars per Acre"); 
System.out.println("Farm Name\t\t\t 1 2 3 4 5 6"); 
System.out.println("\t\t\t\t---|---|---|---|---|---|"); 


while (input.hasNextLine()) 
{ 


    String inputLine = input.nextLine();  

    if (inputLine.isEmpty()) 
    { 

    } 
    else 
    { 
     farmName = inputLine.substring(0,inputLine.indexOf(',')); 
     String inputLine2 = inputLine.substring(inputLine.indexOf(','),inputLine.length()); 
     Scanner line = new Scanner(inputLine2); 
     acres = line.nextDouble(); 
     jars = line.nextInt(); 
     System.out.println(farmName + jars + acres); 

    } 

    } 
} 

private static void printHeading(){ 


System.out.println("Name"); //this assigns what printHeading will print 
System.out.println("CSC 201-55468 Section 01PR"); 
System.out.println("Fall 2012"); 
System.out.println("Popcorn Project"); 
System.out.println(); 
    } 

} 
+1

Всегда отправляйте стек для исключения –

+0

, как бы я это сделал? – user3288334

+0

Исключение, которое появляется в консоли, должно содержать имена методов и номера строк. Весь блок текста в красном цвете - это трассировка стека. Опубликовать, что здесь –

ответ

-1

Вы должны закрыть считыватели и буферы в Java, чтобы иметь чистую разрешение основной. Просто добавьте scannername.close(); и это должно устранить ваши проблемы. Я считаю, что это сделано для предотвращения испорченных файлов.

+0

Файлы, открытые для _read_, не повреждаются и, в общем, закрытие их в небольшой программе не является обязательным. – bmargulies