请教一个简单的问题

allen0311 2004-11-27 05:54:55
输入一段英文字母,将文本编码,a = 10, b = 20, c = 30....i = 90, j = 100...., 每个字母都用“-”分隔。例如"java one" 就是“1001022010-15014050”。输入的只需对字母编码,空格,符号,都可以忽略。
显示编码的结果,并写入一个文件。读取一个已经编码的文件,将其解码并显示解码结果。
...全文
137 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
allen0311 2004-12-12
  • 打赏
  • 举报
回复
另外求教如何解码
allen0311 2004-12-12
  • 打赏
  • 举报
回复
另外求教如何解码
allen0311 2004-12-12
  • 打赏
  • 举报
回复
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"
问怎么把后面一个"-"去掉
还有如果 输入多个空格 比如 “◎ ◎” 就会译成—————— 如何译成空白
treeroot 2004-11-29
  • 打赏
  • 举报
回复
这么烂的编码方式,位数都不一样
funcreal 2004-11-29
  • 打赏
  • 举报
回复
这么简单的东西,不会又是作业吧?!
redex 2004-11-29
  • 打赏
  • 举报
回复
感觉算法上不复杂,但建议楼主去熟悉熟悉java的基本API
allen0311 2004-11-28
  • 打赏
  • 举报
回复
跪求答案
allen0311 2004-11-27
  • 打赏
  • 举报
回复
我是一点都不懂啊 有没有人给一点完整的答案
shangqiao 2004-11-27
  • 打赏
  • 举报
回复
这种编码好象也太简单了吧,好象不太实用呀,看看书《数据压缩》,我已经学过一年了,早忘了。但是你这个编码方法也还是可解码的。先把你的字母和编码对应关系存如数据字典,然后对每个字母查找即可编码,解码时分析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后面的数取出解码



关键看看边缘问题就可以了

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧