Java为具有唯一ID的每条记录创建对象

问题描述 投票:0回答:1

我正在这个项目中,我应该解析包含虚构公司数据和其他相关详细信息的文件,为每个记录创建一个对象,并将对象存储到合适的集合中。我已经开始了,但是现在我陷入困境并伸出援手。

我已经设法从本地存储中读取文件并将其输出到控制台,但是奇怪的是它输出了六次详细信息,与我拥有的变量数相匹配。有简单的解决方法吗?

而且,我将使用哪种技术为每条记录生成ID,而每条记录会逐渐增加ID?例如1,2 ... 11,12,13等)>

我已经阅读了有关映射到数据成员和toString()方法的getter方法的信息,但似乎对它的理解不足以将其实现到我的程序中。是否有任何类似的项目可以帮助我了解这些技术的工作方式并有助于我的工作?

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://file.io/xIQWa6

我正在研究这个项目,我应该在其中分析包含虚构公司数据和其他相关详细信息的文件,为每个记录创建一个对象,并将对象存储到...

java tostring getter
1个回答
0
投票

在下面的代码中,您正在针对details数组的长度运行for循环。 details数组包含6个变量,这就是为什么您看到它打印了6次的原因。要解决此问题,请删除循环并仅打印变量。

© www.soinside.com 2019 - 2024. All rights reserved.