题目——通过命令行输入一段英文文本,分析该段文本中包含的单词数和每个单词的出现次数并输出代码如下:
package two;
import java.util.*;public class Word
{
String str;
Word(String str)
{
this.str=str;
}
}
class Test
{
public static void main(String[] args)
{
int[] times=new int[100] ;
Scanner sc=new Scanner(System.in);
ArrayList<Word> al=new ArrayList<Word>();
while(!sc.next().equals("end"))
{
Word wo=new Word (sc.next());
if(al.contains(wo))
++times[al.indexOf(wo)];
else
{al.add(wo);times[al.indexOf(wo)]++;}
}
//System.out.print("aoehg");
for(int i=0;i<al.size();i++)
{
System.out.print(al.get(i).str);
System.out.println(times[i]);
}
}
}想不通哪出问题了!!!!!~~~~~~~
package two;
import java.util.*;public class Word
{
String str;
Word(String str)
{
this.str=str;
}
}
class Test
{
public static void main(String[] args)
{
int[] times=new int[100] ;
Scanner sc=new Scanner(System.in);
ArrayList<Word> al=new ArrayList<Word>();
while(!sc.next().equals("end"))
{
Word wo=new Word (sc.next());
if(al.contains(wo))
++times[al.indexOf(wo)];
else
{al.add(wo);times[al.indexOf(wo)]++;}
}
//System.out.print("aoehg");
for(int i=0;i<al.size();i++)
{
System.out.print(al.get(i).str);
System.out.println(times[i]);
}
}
}想不通哪出问题了!!!!!~~~~~~~
{
Word wo=new Word (sc.next());
用了两次
应该改成
String temp =null;
while("end".equals((temp =sc.next()))){
if(al.contains(temp))
++times[al.indexOf(temp)];
else
{al.add(wo);times[al.indexOf(temp)]++;}
}
}
推荐使用map。