格式化文本文件的输出-Java

格式化文本文件的输出-Java,java,Java,如何更改代码,使其按我希望的方式打印?我希望首先打印userNameGenerator,前面有一个箭头(->),然后显示personName,旁边有打开和关闭的方括号([])。我还想删除结尾的逗号。我已经做了一点,如下所示: 需要更改的代码: Set<String> newStrSet = new HashSet<>(); for(int i = 0; i < personFile.size(); i++) { String[] regionSplit =

如何更改代码,使其按我希望的方式打印?我希望首先打印userNameGenerator,前面有一个箭头(->),然后显示personName,旁边有打开和关闭的方括号([])。我还想删除结尾的逗号。我已经做了一点,如下所示:

需要更改的代码:

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("]");
}
我希望输出的外观如下:

Dompteuse -> [Imran Sullivan]
Deservedness -> [Eadie Jefferson]
Ostracize -> [Eadie Jefferson]
Abattoir -> [Angel Whitehouse]
Choreography -> [Imran Sullivan, Taylor Vargas, Priya Oliver]

我正在查看每个循环的双循环,我相信我已经缩小了您的问题范围。在第二个for each循环中,您打印出此人的姓名,后跟逗号。但对每个元素都要这样做,包括最后一个元素。在其中包含一个条件,即一旦达到行的长度,只打印名称而不是逗号

for (Codes2 s: personFile) {
        if (s.getUserNameGenerator().contains(p)) {
           //Try including conditional for the last element here
            System.out.printf("%s, ", s.getPersonName());
        }
} 

希望这有帮助

我正在查看每个循环的双精度,我相信我已经缩小了您的问题范围。在第二个for each循环中,您打印出此人的姓名,后跟逗号。但对每个元素都要这样做,包括最后一个元素。在其中包含一个条件,即一旦达到行的长度,只打印名称而不是逗号

for (Codes2 s: personFile) {
        if (s.getUserNameGenerator().contains(p)) {
           //Try including conditional for the last element here
            System.out.printf("%s, ", s.getPersonName());
        }
} 

希望这有帮助

您需要更改处理打印的
for
循环,以便它仅在
个人配置文件中有其他元素时打印逗号

以下是我将尝试的内容(请注意,我无法测试此代码,因为我无法访问您的数据文件):

for(字符串p:newStrSet){
System.out.printf(“%s->[”,p);
布尔值=false;
//对每个索引使用索引而不是a,以便
//检查是否有下一个元素
对于(int i=0;i
您需要更改处理打印的
for
循环的
,以便它仅在
个人配置文件中有其他元素时打印逗号

以下是我将尝试的内容(请注意,我无法测试此代码,因为我无法访问您的数据文件):

for(字符串p:newStrSet){
System.out.printf(“%s->[”,p);
布尔值=false;
//对每个索引使用索引而不是a,以便
//检查是否有下一个元素
对于(int i=0;i
逗号和闭括号打印在新行中大括号放置有问题。它现在应该可以工作了。代码有问题,因为控制台中发生了这样的事情:
Choreography->[,,,,Taylor Vargas,,,,,,]
我没有意识到你没有打印某些人。这行得更好吗?有些行得通,有些行得通:
[Tyler Green,Andre Bishop]
[Angelina Rose,]
逗号和闭括号打印在新行中,大括号的位置有问题。它现在应该可以工作了。代码有问题,因为控制台中发生了这样的事情:
Choreography->[,,,,Taylor Vargas,,,,,,]
我没有意识到你没有打印某些人。这行得通吗?有些行得通,有些行得通:
[Tyler Green,Andre Bishop]
[Angelina Rose,]
Dompteuse -> [Imran Sullivan]
Deservedness -> [Eadie Jefferson]
Ostracize -> [Eadie Jefferson]
Abattoir -> [Angel Whitehouse]
Choreography -> [Imran Sullivan, Taylor Vargas, Priya Oliver]
for (Codes2 s: personFile) {
        if (s.getUserNameGenerator().contains(p)) {
           //Try including conditional for the last element here
            System.out.printf("%s, ", s.getPersonName());
        }
} 
for (String p: newStrSet) {
    System.out.printf("%s -> [", p);
    boolean needComma = false;

    // Use indices instead of a for-each so you can 
    // check if there's a next element
    for (int i = 0; i < personFile.size(); ++i) {
        Codes2 s = personFile.get(i);

        if (s.getUserNameGenerator().contains(p)) {
            // Only print out the comma and space if there's a preceding element
            if (needComma) {
                System.out.print(", ");
            }

            System.out.printf("%s", s.getPersonName());

            needComma = true;
        }
    }

    System.out.println("]");
}