这种编码好象也太简单了吧,好象不太实用呀,看看书《数据压缩》,我已经学过一年了,早忘了。但是你这个编码方法也还是可解码的。先把你的字母和编码对应关系存如数据字典,然后对每个字母查找即可编码,解码时分析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后面的数取出解码关键看看边缘问题就可以了
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后面的数取出解码关键看看边缘问题就可以了
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"
问怎么把后面一个"-"去掉
还有如果 输入多个空格 比如 “◎ ◎” 就会译成—————— 如何译成空白