Я пытаюсь написать программу Java, которая читает входной файл, состоящий из URL-адресов, извлекает токены из них и отслеживает, сколько раз каждый токен появляется в файле. Я написал следующий код:Ошибка инициализации переменной массива в Java
import java.io.*;
import java.net.*;
public class Main {
static class Tokens
{
String name;
int count;
}
public static void main(String[] args) {
String url_str,host;
String htokens[];
URL url;
boolean found=false;
Tokens t[];
int i,j,k;
try
{
File f=new File("urlfile.txt");
FileReader fr=new FileReader(f);
BufferedReader br=new BufferedReader(fr);
while((url_str=br.readLine())!=null)
{
url=new URL(url_str);
host=url.getHost();
htokens=host.split("\\.|\\-|\\_|\\~|[0-9]");
for(i=0;i<htokens.length;i++)
{
if(!htokens[i].isEmpty())
{
for(j=0;j<t.length;j++)
{
if(htokens[i].equals(t[j].name))
{ t[j].count++; found=true; }
}
if(!found)
{
k=t.length;
t[k].name=htokens[i];
t[k].count=1;
}
}
}
System.out.println(t.length + "class tokens :");
for(i=0;i<t.length;i++)
{
System.out.println(
"name :"+t[i].name+" frequency :"+t[i].count);
}
}
br.close();
fr.close();
}
catch(Exception e)
{
System.out.println(e);
}
}
}
Но когда я запускаю его, он говорит: variable t not initialized.
. Что я должен сделать, чтобы это исправить?
На несвязанной ноте вы должны «вырваться» из внутреннего цикла, когда вы установите 'found = true'. И «HashMap» обеспечит гораздо лучшую производительность, если у вас есть большое количество токенов, так что подумайте об этом. –
Еще одно замечание, иногда с тестовым кодом, подобным этому, когда вы делаете попытку/улов (исключение), чтобы избежать кучи исключений, я предпочитаю просто использовать свой основной бросок Исключение - это способ, которым я определяю код «Test/experimental» , В коде доставки, однако, никогда не перехватывайте Exception, перечислите те, которые вы действительно ожидаете. –