Я работаю над этим проектом, где я должен проанализировать файл, который содержит данные вымышленных компаний и другие соответствующие детали, создать объект для каждой записи и сохранить объекты в подходящей коллекции. Я сделал старт, но теперь я застрял и обратиться за помощью.
Мне удалось прочитать файл из локального хранилища и вывести его на консоль, но, как ни странно, он выводит детали шесть раз, что соответствует количеству переменных, которые у меня есть. Есть ли простое исправление для этого?
Кроме того, какую технологию я бы использовал для генерации идентификатора для каждой записи, которая будет увеличиваться с каждой записью? например, 1, 2 ... 11, 12, 13 и т. д.
Я читал о методе getter для сопоставления членам-элементам данных и методам toString (), но, похоже, не могу понять его достаточно для реализации это в моей программе. Существуют ли подобные проекты, которые помогли бы мне понять, как эти технологии работают и помогли бы мне?
import java.io.File;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.Scanner;
public class ApplicationRunner {
static void menu() {
try {
char quit = 'n';
String menuInput;
int menuChoice = 0;
Scanner scan = new Scanner(System.in);
while (quit != 'y') {
System.out.println(
"\n List traders.......1"
+ "\n Select trader......2"
+ "\n Search locations...3"
+ "\n Search services....4"
+ "\n Exit...............0"
+ "\n\n Enter choice:>");
menuChoice = scan.nextInt();
switch (menuChoice) {
case 1:
listTraders();
break;
case 2:
selectTrader();
break;
case 3:
searchLocation();
break;
case 4:
searchServices();
break;
case 0:
System.out.println("Exiting...");
System.exit(0);
break;
default:
System.out.println("Invalid menu selection.");
}
System.out.println("Quit? y/n");
menuInput = scan.next().toLowerCase();
quit = menuInput.charAt(0);
}
}
catch (Exception inputError)
{
System.out.println("\nInvalid input value. Valid values 0-4.");
menu();
}
}
static void listTraders() {
String dataFile = System.getProperty("user.dir") + File.separator + "traders.txt";
try {
BufferedReader br = new BufferedReader(new FileReader(dataFile));
String line = null;
while ((line = br.readLine()) != null) {
String[] details = line.split(":");
String companyName = details[0];
String location = details[1];
String services = details[2];
String description = details[5];
int numEmployees = Integer.parseInt(details[3]);
double dailyRate = Double.parseDouble(details[4]);
for (String printDetails : details) {
System.out.println(companyName + "\t" + location + "\t" + services +
"\t" + description + "\t" + numEmployees + "\t" + dailyRate);
}
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
static void selectTrader() {
}
static void searchLocation() {
}
static void searchServices() {
}
public static void main(String[] args) {
menu();
}
}
Файл трейдеров, который используется в этой программе - https://gist.github.com/senotajs/0011c93460f0e9603a53858de15f8639