这种编码好象也太简单了吧,好象不太实用呀,看看书《数据压缩》,我已经学过一年了,早忘了。但是你这个编码方法也还是可解码的。先把你的字母和编码对应关系存如数据字典,然后对每个字母查找即可编码,解码时分析1001022010-15014050这个字符串,
char[] dataArray="1001022010-15014050".toCharArray();
final int arrayLength=dataArray.length;
int start=0;
int end=1;
while(end<arrayLenth){
    if(arrayLength[end]!'0'){
       将start和end之间的数取出解码
       start=end+1;
       end=end+2;
}
else{
end++;
}
}
//最后还剩一个
将start后面的数取出解码关键看看边缘问题就可以了

解决方案 »

  1.   

    感觉算法上不复杂,但建议楼主去熟悉熟悉java的基本API
      

  2.   

    import java.io.*;
    public class Coding
    {
        // instance variables - replace the example below with your own
        
        private char e;
        
        
           /**
         * Constructor for objects of class File_IO
         */
        public Coding()
               
        {
            // initialise instance variables
           
            
           
            
           
        }public void Encoding() throws IOException
        {    
        File outputFile = new File("encoding.txt");
            FileWriter out = new FileWriter(outputFile);
     
           try 
            {
                BufferedReader reader = new BufferedReader(new FileReader("mytext.txt"));
                boolean finished = false;
                
                do
                {
                    String lines = reader.readLine();
                    if (lines == null)
                            finished = true;
                    else   
                    {         
                           String[] result = lines.split(" ");
                    
                      for (int x=0; x<result.length; x++)  
                        {    result[x] = result[x] + "-";
                           
                        
                         for (int y = 0; y<result[x].length();y++)
                           {char c = result[x].charAt(y);
                               String d = "";
                               
               
                               switch(c)
                              {   case 'a' : d = "10"; break;
                                  case 'b' : d = "20"; break;
                                  case 'c' : d = "30"; break;
                                  case 'd' : d = "40"; break;
                                  case 'e' : d = "50"; break;
                                  case 'f' : d = "60"; break;
                                  case 'g' : d = "70"; break;
                                  case 'h' : d = "80"; break;
                                  case 'i' : d = "90"; break;
                                  case 'j' : d = "100"; break;
                                  case 'k' : d = "110"; break;
                                  case 'l' : d = "120"; break;
                                  case 'm' : d = "130"; break;
                                  case 'n' : d = "140"; break;
                                  case 'o' : d = "150"; break;
                                  case 'p' : d = "160"; break;
                                  case 'q' : d = "170"; break;
                                  case 'r' : d = "180"; break;
                                  case 's' : d = "190"; break;
                                  case 't' : d = "200"; break;
                                  case 'u' : d = "210"; break;
                                  case 'v' : d = "220"; break;
                                  case 'w' : d = "230"; break;
                                  case 'x' : d = "240"; break;
                                  case 'y' : d = "250"; break;
                                  case 'z' : d = "260"; break;
                                  case '-' : d = "-"; break;
                                  
                               } 
                                  //System.out.println(d);
                                      System.out.print(d);
                                       out.write(d); 
                                     
                             }            
                         }  
                      }   
                 } while (!finished);
                   reader.close();
                   out.close(); 
            }
                 catch (IOException e)
                 {
                 }
                 
          
        }
    }
    这是我自己写的 不知道除了swtich 还有没有更简单的方法 
    有两个bug 不知道怎么解决
    "java  one"  出来的是"1001022010-15014050-"而不是"1001022010-15014050"
    问怎么把后面一个"-"去掉
    还有如果 输入多个空格 比如 “◎    ◎” 就会译成—————— 如何译成空白