java - 查找 ArrayList 中最常见的字符串 - 当前返回 null

标签 java string arraylist

我对java还很陌生。我一直在研究如何在数组中查找最常见的字符串,但我的代码无法正常工作。我的错误是,当我需要 mostCommon 打印出最常见的 IP 地址时,它会打印出 null

这是我的代码...

public class Log_File_Analysis 
{

private static ArrayList<String> ipAddress = new ArrayList<>();
private static String temp , mostCommon;
int max = 0,  num = 0;


public String getMostUsedIpAddress()
{
     Collections.sort(ipAddress);   
    for (String string : ipAddress) 
    {
      if (string.equals(temp)) 
      {
        num++;
      } 
      else {
        if (num>max) 
        {
          max = num;
          mostCommon = string;
        }
        num = 1;
        temp = string;
      }
    }
    return mostCommon;
}

public static void main (String[] args)
{
    System.out.println("Enter a log file to be analyized");
    //Scanner keyboard = new Scanner(System.in);

    File filename = new File("small.log");              
    try
    {   
        Scanner data_store = new Scanner (filename);
        while(data_store.hasNext())
        {
            String line = data_store.nextLine(); 
            int begin = line.indexOf("[client ") + 8;
                int end = line.indexOf("]", begin);
            String ip = line.substring(begin, end);
            ipAddress.add(ip);
            System.out.println(ip);
        }
        data_store.close();
    }
    catch(FileNotFoundException e)
    {
        System.out.println("small.log was not found!");         
    }
    System.out.println(mostCommon);
}

}

您能帮助我了解我做错了什么吗?

最佳答案

在代码中,您实际上没有调用方法来确定最常见的值。

您需要将其添加到 main() 方法的末尾...

mostCommon = getMostUsedIpAddress();
System.out.println(mostCommon);

基本上,您已经读入了所有值,因此现在您需要调用方法来查找最常见的值,然后可以显示它。目前,您的代码正在打印 null,因为您实际上尚未尝试在任何地方设置 mostCommon 的值。

关于java - 查找 ArrayList 中最常见的字符串 - 当前返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30283212/

相关文章:

javascript - 如何将字符串转换为 DOM 元素以与 canvas 元素一起使用?

javascript - 从包含字符串中每个单词的数组中提取索引

c# - 查找在多个句子中重复出现的三个最常见单词数组的算法

java - 扩展 java ArrayList

java - 在 ArrayList 中查找对象索引的有效方法

java - 接口(interface)方法返回包含不同对象的ArrayList

抽象类的 Java 构造函数

java - 阻止本地接收已发布的消息

java - 将 Java 列表转换为 Scala 序列

java - 使用 docker 执行 mkdir 命令