gpt4 book ai didi

java - 测试 HashSet 时如何仅从循环中获取一个输出

转载 作者:行者123 更新时间:2023-12-02 03:18:58 25 4
gpt4 key购买 nike

我正在构建一个程序,该程序应该使用 HashSet 来判断文本文件中的单词列表是否都是唯一的,或者是否存在重复项。如果存在重复项,则唯一的输出应为“NOT_UNIQUE”,如果没有重复项,则输出应为“UNIQUE”。

我认为执行此操作的方法是将文件中的单词添加到 HashSet,如果无法添加某个单词,那是因为该单词是重复的。我已经开始构建该程序,但该程序为每个单词输出“UNIQUE”,而不是在程序结束时仅输出一次。我认为这与我使用 while 循环和 infile.readLine() 有关,但我不确定这里还能做什么。感谢您的帮助。我的代码如下:

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

public class Lab5
{
public static void main (String[] args) throws Exception
{
HashSet<String> set = new HashSet<String>();
BufferedReader infile = new BufferedReader( new FileReader( args[0] ) );
while ( infile.ready() )
{
String word = infile.readLine();
if ( !set.add(word) )
System.out.println("NOT_UNIQUE \n");
else
System.out.println("UNIQUE \n");
}
}
}

最佳答案

标志并不优雅,但在这种情况下我认为这是一个务实的解决方案。如果您不希望每个单词都显示它,您可以在循环之外设置一个标志和保释:

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

public class Lab5
{
public static void main (String[] args) throws Exception
{
boolean isUnique = true;
HashSet<String> set = new HashSet<String>();
BufferedReader infile = new BufferedReader( new FileReader( args[0] ) );
while ( infile.ready() )
{
String word = infile.readLine();
if ( !set.add(word) ) {
isUnique = false;
break;
}
}

System.out.println(isUnique ? "UNIQUE \n" : "NOT_UNIQUE \n");

}
}

如果将其放入应用程序中,请记住关闭文件描述符。

关于java - 测试 HashSet 时如何仅从循环中获取一个输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39878188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com