文本文件中的重复项不应该添加到列表中,但是这个程序输出列表中的每个单词都不知道为什么hasElement方法不起作用。我需要创建一个应该被称为MTFencoder.java的程序对象它应该接受文本文件的名称作为命令行参数,这样如果存在一个名为story.txt的文本文件,那么可以使用以下命令调用您的程序:
java MTFencoder test.txt
它应该为输入文件的每个单词生成一行输出,这样当第一次遇到单词时,输出为:
0字
如果之前遇到过该单词,则输出是一个整数,指定根据最近使用的(MRU顺序)排序的已知单词列表中该单词的索引。
import java.util.*;
import java.io.*;
class extmycase
{
public static void main(String [] args)
{
Scanner scan=null;
Scanner scan1=null;
wordlist word=null;
String s;
int count=0;
try
{
scan=new Scanner(new File(args[0]));
scan1=new Scanner(new File(args[0]));
while(scan1.hasNext())
{
scan1.next();
count++;
}
System.out.println("No.of words : " + count);
word = new wordlist(count);
while(scan.hasNext())
{
s=scan.next();
if(word.hasElement(s)==true)
{
System.out.println("has element");
}
else
{
word.add(s);
}
}
word.showlist();
}
catch(Exception e)
{
System.err.println("unable to read from file");
}
finally
{
// Close the stream
if(scan != null)
{
scan.close( );
}
if(scan1 !=null)
{
scan1.close();
}
}
}
}
wordlist程序是
import java.lang.*;
import java.util.*;
public class wordlist
{
public String data [];
private int count;
private int MAX;
public wordlist(int n)
{
MAX = n;
data = new String[MAX];
count = 0;
}
// Adds x to the set if it is not already there
public void add(String x)
{
if (count<MAX)
{
data[count++] = x;
}
}
// Removes x from set by replacing with last item and reducing size
public void replace(String x)
{
for(int i=0;i<count;i++)
{
if(data[i]==x)
{
data[count]=data[i];
for(int j=i;j<count;j++)
data[j]=data[j+1];
}
}
}
// Checks if value x is a member of the set
public boolean hasElement(String x)
{
for(int i=0;i<=count;i++)
{
if(data[i].equals(x))
{
return true;
}
}
return false;
}
public int findIndex(String x)
{
for(int i=0;i<=count;i++)
{
if(data[i].equals(x))
{
return i;
}
}
return 0;
}
public void showlist()
{
int l=0;
for(int i=0;i<count;i++)
{
System.out.println(data[i]);
l++;
}
System.out.println(l);
}
}
答案 0 :(得分:2)
您的wordlist绝不会包含任何元素。它被构造,将所有东西都设置为0,然后你看它是否包含单词,当然它永远不会。此外,两个扫描仪都指向同一个文件,因此从一个文件中存在的每个单词都必须存在于另一个单词中,并且所有单词都会被发现,从而首先使这个文件成为半冗余。