我对Java很陌生。我一直在研究如何在数组中查找最常见的String,但是我的代码无法正常工作。我的错误是mostCommon在我需要打印出最频繁的IP地址时将其打印出来。

这是我的代码...

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/

10-10 21:49