java Test

来源:互联网 发布:php header 跳转 编辑:程序博客网 时间:2024/05/22 11:55

import java.io.*;
import java.util.*;
import java.lang.*;

class word //word object
{
 char[] invmap={'2','2','2','3','3','3','4','4','4','5','5','5','6','6','6','7','7','7','7','8','8','8','9','9','9','9'};
 String wd;    //保存字母
 String nwd;    //保存字母数   


 word(String s)   //构造函数
 {
  wd=s;
  getnum();
 }

 void getnum()   //将字母转为数字
 {
  char[]temp=wd.toCharArray();
  for(int i=0;i<wd.length();i++)
  {
   temp[i]=invmap[(int)wd.charAt(i)-97];
   String ts=new String(temp);
   nwd=ts;
  }
 }
}

class wordlib  //小字典库
{
 LinkedList WordList=new LinkedList();
 wordlib()
 {
 }
 
 void ConstructLib(String[] WordArray)   ///从字符串数组构造字典库
 {
  for(int i=0;i<WordArray.length;i++)
  {
   word temp=new word(WordArray[i]);
   ListIterator iter=WordList.listIterator();
   if(WordList.isEmpty())
    WordList.addFirst(temp);

   else
   {
    int addf=1;
    while(iter.hasNext())
    {
     word t=(word)iter.next();
     if(t.nwd.compareTo(temp.nwd)>=0)
     {
      if(iter.hasPrevious())
      {
       iter.previous();
       iter.add(temp);
       addf=0;
       break;
      }
      else
      {
       WordList.addFirst(temp);
       addf=0;
       break;
       
      } 
     }
    }    //while end
    if(addf==1)
    WordList.addLast(temp);
     
   }
  }
 }     // end of construct library
}

class ResultList  //结果列表
{
 LinkedList result =new LinkedList();
 
 void add(word wd)
 {
  result.add(wd);
 } 
}

public class findword  //main class
{
 static String[] FiveWord={"watch","match","noise","risky","stock"};
 static String[] FourWord={"work","back","come","deal","desk","book","java","tool","face"};
 
 public static void main(String[] args)
 {
  boolean flag =true,errflag=false;
  String s="";   //读输入字符串
  wordlib w1=new wordlib();
  w1. ConstructLib(FiveWord);
  w1. ConstructLib(FourWord);
  ListIterator iter=w1.WordList.listIterator();
  try
  {
   InputStreamReader isr=new InputStreamReader(System.in);
   BufferedReader br=new BufferedReader(isr);
   while(flag)
   {
    System.out.println("Please input your number,input 'exit' to quit");
    s=br.readLine();
    //flag=flase
    if(s.compareToIgnoreCase("exit")==0)
    {
     flag=false;
     System.exit(0);
      
    }
    for(int i=0;i<s.length();i++)
    {
     if(s.charAt(i)>'9'||s.charAt(i)<'2')
     {
      errflag=true;
      System.out.println("the input must be digital between 2 to 9");
      break; 
     }
     ResultList re=new ResultList();
     ListIterator iterator=w1.WordList.listIterator();
     while(iterator.hasNext())
     {
      word tm=(word)iterator.next();
      if(tm.nwd.compareTo(s)==0)
      {
       re.add(tm);
      } 
      if(tm.nwd.compareTo(s)>0)
      break;
     }
     ListIterator reIter=re.result.listIterator();
     //输出结果
     if(re.result.isEmpty()&&(!errflag))
     {
      System.out.println("there is no result"); 
     }
     while(!re.result.isEmpty()&&reIter.hasNext())
     {
      word tm=(word)reIter.next();
      System.out.println("result is"+tm.nwd+" "+tm.wd); 
     }
     errflag=false;
     
    }
   }
  }catch(IOException e)
  {
   e.printStackTrace();
  }
  
 }      //end of main fuction
}       //end of fine class 

原创粉丝点击