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

标签 java tostring getter

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

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

此外,我将使用什么技术为每条记录生成 ID,该 ID 将随每条记录递增?例如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

最佳答案

在下面的代码片段中,您正在针对 details 数组的长度运行 for 循环。 details 数组包含 6 个变量,这就是为什么你会看到它打印了 6 次。要修复它,请删除循环并仅打印变量。

    for (String printDetails : details) {

        System.out.println(companyName + "\t" + location + "\t" + services +
                "\t" + description + "\t" + numEmployees + "\t" + dailyRate);
    }

关于Java为每条记录创建具有唯一ID的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60860708/

相关文章:

java - getOrCreate 函数是好的还是坏的做法?

java - WAR 部署上的 Groovy Grails 工具套件 NoClassDefFoundError

java - IntelliJ : How to setup variables in settings. xml?

java - 如何正确编译 tostring 方法

Pythonic 替代 dict-style setter?

java - 如何暂停javafx类

c# - toString保留小数位

c# - 使用 ToString() 格式显示整数 ASP.net

iOS - 继承是如何工作的?

ios - 如何按名称从 NSSet 中获取对象