У меня есть проект на Java, который я пытаюсь сделать (для удовольствия), но я боюсь этого шага. У меня есть города, которые я пытаюсь читать из двух стран, из Соединенных Штатов и Китая, и у меня возникают проблемы с чтением файла. Я пытаюсь использовать разделитель для разделения городов в Китае и Соединенных Штатах.Чтение файла и его хранение в 2D-массив объектов в Java?
Вот мой текстовый файл "Cities.txt"
San Francisco 9874343 543443 193838
Лос-Анджелес 3900000 52000 22000
Балтимор 622104 34423 1234
Хьюстон 2196000 45444 29393
Нью-Йорк 8500000 54000 27000
Филадельфия 1510000 654334 21343
Boston 6423344 345334 13443
Чикаго 2719000 39000 19282
San Diego 1323343 432343 18374
Даллас 1258000 423343 17363 |
Пекин 21500000 32454 23454
Hangzhouu 9018000 32343 192828
Shanghia 24500000 432345 23444
GuangZhou 20800654 323455 298383
Ухань 10670000 54344 302344
Шаньтоу 5391028 43345 23235
Hong Kong 7234800 39039 278383
Макао 650900 34543 17364
Шэньчжэнь 10630000 44343 19883
ZIBO 2980000 49383 20009
Вот мой основной класс Java. У меня также есть класс Cities с конструктором, getters/seters и toString();
static Cities[][] multi = new Cities[2][10];
public static void main(String[] args) throws FileNotFoundException {
System.out.println("The point of this program is to compare different cities in the two major superpower countries, \n The United States and China.");
System.out.println("The information in the cities in stored in a 2D array of Objects and is pre-created in a text files. \n Please pick an option to manipulate the information in the array.");
Scanner in = new Scanner(System.in);
String name = " ";
int population = 0;
double wage = 0.0;
int density = 0;
Cities cities = new Cities(name,population,wage,density);
boolean exit = false;
readcity(name);
String options = "1). Print all the cities. \n 2). Print just the united states cities. \n 3). Print just the China Cities \n 90). Exit program";
System.out.println(options);
int decide = in.nextInt();
while (!exit)
{
switch (decide) {
case 1:
{
printarray(name,population,wage,density);
}
case 2: {
}
case 3: {
}
case 90: {
exit = true;
}
}
}
}
public static Cities readcity(String fline)
{
try {
String name; int population; double wage; int density;
int countries = 2; int city = 10;
Scanner fileScan = new Scanner(new File("/src/Cities.txt"));
fileScan.useDelimiter("|");
while (fileScan.hasNext()) {
name = fileScan.next();
population = fileScan.nextInt();
wage = fileScan.nextDouble();
density = fileScan.nextInt();
Cities City = new Cities(name, population, wage, density);
return new Cities(name,population,wage,density);
}
fileScan.nextLine();
Cities City = readcity(fline);
multi[countries][city] = City;
return City;
}
catch(Exception e) {
System.out.println("Looks like there was an error.");
}
Cities City = readcity(fline);
return City;
}
public static void printarray(String name, int population, double wage, int density) throws FileNotFoundException{
Cities cities = new Cities(name,population,wage,density);
for (int row =0; row < multi.length; row++){
for (int column = 0; column < multi[row].length; column++){
System.out.println(multi[row][column]);
}
System.out.println();
}
cities.toString();
}
}
Метод, кажется, делает бесконечный рекурсивный вызов, но мне интересно, как я это исправить. Могу ли я сделать тот же подход для двух файлов и реализовать этот путь? Или я бы вытащил их метод для чтения в городах и внедрить их с помощью разного подхода? Я слабый с обработкой файлов, и использование 2d-массива - даже более высокий уровень поверх этого. Попытка исправить мои недостатки, чтобы любая помощь, которую вы могли мне дать, была бы полезна.
Вы - спасатель жизни, спасибо вам! И да, вы правы, я не испытываю проблем с файлами и многомерными массивами, и я пытаюсь поправиться. –
Практикующие отлично! и приветствую вас. Попытайтесь больше узнать о рекурсии и о том, как ее использовать и как ее использовать. – CabDude