2015-04-02 4 views
-1

Я пытаюсь написать программу, которая использует ArrayLists и входной файл для простой программы. Программа должна читать текстовый файл и сохранять каждое поле в arraylist, а затем выполнять вычисления. Файл содержит имена городов, населения и названия страны. т.е. (Лондон, 7500000, Великобритания) , и когда я запускаю программу с аргументом командной строки, она должна печатать заявление о том, сколько городов имеет население больше, равное аргументу командной строки.Файл ввода данных структуры данных

Я надеюсь, что кто-то может вести меня в правильном направлении. Благодарю.

+0

Создать основной метод, а затем создать 'Scanner' /' объект BufferedReader', чтобы прочитать файл, а затем разделить его на ''. Сохраните их в своем «ArrayList» и в последнем цикле через arraylist и распечатайте их :) – Parth

ответ

0

Это хорошая школа упражнение :-)

Предположим, что ваш входной файл в C: \ Temp \ cities.txt содержит:

London,83000000,UK 
Paris,22000000,France 
Madrid,32000000,Spain 

Следующий класс Test.java:

import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.Iterator; 

public class Test { 

    private static ArrayList<City> loadDataFromFile() throws IOException { 

    ArrayList<City> list = new ArrayList<City>(); 
    BufferedReader br = null; 
    String sCurrentLine; 
    br = new BufferedReader(new FileReader("C:\\temp\\cities.txt")); 

    while ((sCurrentLine = br.readLine()) != null) { 
     String[] splittedLine = sCurrentLine.split(","); 
     City city = new City(splittedLine[0], Integer.parseInt(splittedLine[1]), splittedLine[2]); 
     list.add(city); 
    } 

    br.close(); 
    return list; 
    } 

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

    ArrayList<City> list = loadDataFromFile(); 
    int input = Integer.parseInt(args[0]); 
    Iterator<City> it = list.iterator(); 

    while (it.hasNext()) { 
     City currentCity = it.next(); 
     if (currentCity.getPopulation() > input) { 
     System.out.println("Cities with population greater than " + input + " : " + currentCity.getName() + "," + currentCity.getCountry()); 
     } else if (currentCity.getPopulation() == input) { 
     System.out.println("City with population equals to " + input + " : " + currentCity.getName() + "," + currentCity.getCountry()); 
     } else { 
     System.out.println("Cities with population lower than " + input + " : " + currentCity.getName() + "," + currentCity.getCountry()); 
     } 
    } 

    } 
} 

и простой POJO:

public class City { 

    private String name; 

    private int population; 

    private String country; 

    public City(String name, int population, String country) { 
    this.name = name; 
    this.population = population; 
    this.country = country; 
    } 

    public String getName() { 
    return name; 
    } 

    public void setName(String name) { 
    this.name = name; 
    } 

    public int getPopulation() { 
    return population; 
    } 

    public void setPopulation(int population) { 
    this.population = population; 
    } 

    public String getCountry() { 
    return country; 
    } 

    public void setCountry(String country) { 
    this.country = country; 
    } 

} 

Даст вам:

java Test 3200000 

Cities with population greater than 32000000 : London,UK 
Cities with population lower than 32000000 : Paris,France 
City with population equals to 32000000 : Madrid,Spain 
+0

Это не толчок в правильном направлении ... – Stefan

+0

Спасибо :) Я постараюсь понять код сейчас. – jeeps95

0

Не давая «готов к запуску» ответ, я думаю, что это должно выглядеть примерно так (псевдо-код)

public static void main(String[] args) { 
    convert first argument to integer 
    set up a reader for your file 
    while (another line is found) { 
     split the line by comma 
     convert second item in array to an integer 
     if integer >= integer passed in args 
       print current line 
    } 
    } 

Имейте в виду, что вы должны сделать обработку исключений (IOExceptions, NumberFormatException и т.д.). Я намеренно не включал сохранение в arraylist, потому что это означало бы, что вам нужно дважды зацикливаться (один раз над файлом и один раз над списком), который не нужен.

Смежные вопросы