java - 从 toString 打印文本数据 - Java

标签 java

我正在开发一个个人 Java 项目,并学习如何从文本文件打印数据。我的代码(如下所示)完美地打印出 userNameGenerator 和 personName 数据,但我希望它从我的 Java 类中的 toString 打印出来。我如何更改我的代码以从那里打印出来?

这就是我的 toString 的样子:

@Override
public String toString() {        
    return userNameGenerator + " -> " + "[" + personName + "]" ;
}

完整代码:

import java.util.*;
import java.io.*;

public class Codes {
    public static void main(String[] args) { 
        List<Codes2> personFile = new ArrayList<>();

        try {   
            BufferedReader br = new BufferedReader(new FileReader("person-data.txt"));
            String fileRead = br.readLine();
            while (fileRead != null) {
                String[] personData = fileRead.split(":");                
                String personName = personData[0];
                String userNameGenerator = personData[1];                
                Codes2 personObj = new Codes2(personName, userNameGenerator);               
                personFile.add(personObj);
                fileRead = br.readLine();
            }
            br.close();
        }

        catch (FileNotFoundException ex) {            
            System.out.println("File not found!");
        } 

        catch (IOException ex) {             
            System.out.println("An error has occured: " + ex.getMessage());
        }

        Set<String> newStrSet = new HashSet<>();
        for(int i = 0; i < personFile.size(); i++){
            String[] regionSplit = personFile.get(i).getUserNameGenerator().split(", ");
            for(int j = 0; j < regionSplit.length; j++){
                newStrSet.add(regionSplit[j]);
            }
        }

        for (String p: newStrSet) {
            System.out.printf("%s -> ", p);
            for (Codes2 s: personFile) {
                if (s.getUserNameGenerator().contains(p)) {
                    System.out.printf("%s, ", s.getPersonName());
                }
            }  
            System.out.println();
        }       
    }
}

Java 类:

public class Codes2 implements Comparable<Codes2> {

    private String personName;
    private String userNameGenerator;

    public Codes2(String personName, String userNameGenerator) {
        this.personName = personName;
        this.userNameGenerator = userNameGenerator;
    }

    public String getPersonName() {
        return personName;
    }

    public String getUserNameGenerator() {
        return userNameGenerator;
    }

    @Override
    public int compareTo(Codes2 o) {
        return getUserNameGenerator().compareTo(o.getUserNameGenerator());
    }

    public int compare(Object lOCR1, Object lOCR2) {                
        return ((Codes2)lOCR1).userNameGenerator                        
                .compareTo(((Codes2)lOCR2).userNameGenerator);            
    }

    @Override
    public String toString() {        
        return userNameGenerator + " -> " + "[" + personName + "]" ;
    }
}

最佳答案

您的代码中的一切看起来都正确。

我认为你应该在尝试打印它时调用该方法:

for (Codes2 s: personFile) {
     if (s.getUserNameGenerator().contains(p)) {
         System.out.printf("%s, ", s.toString());
     }
}

这是因为打印对象的类与保存数据的类耦合并不紧密。

关于java - 从 toString 打印文本数据 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47684945/

相关文章:

java - BufferedWriter/PrintWriter/OutputStreamWriter 在调用 .close() 之前不刷新缓冲区(通过套接字输出流)

java - TextViews 在 for 循环中更改文本

Java JNDI 查找名称兼容 Tomcat 和 Weblogic

java - 通过专用网络访问服务器

java - 收到有关 Eclipse/Java 应用程序中捕获的异常的通知

java - 如何使用索引值拆分正则表达式

java - 为接口(interface)或每个实现编写单元测试?

java - Selenium Webdriver java 自动化窗口

java - jackson 中的意外字符 ('\'(代码 92))

java - 在现有的大型 Java 代码库中构建测试套件