我对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/