📄 mysystem.java
字号:
package compress;
public class MySystem
{
MyMenu MM;
MyData MD=new MyData();
MyBTree MBCT;
MyBTree MBHT;
MyBOrderTree MBOT=new MyBOrderTree();
MyHuffmanTree MHT=new MyHuffmanTree();
public String number="";
public String huffman="";
public String texthuffman="";
public String textchar="";
public int[] out;
public String outstring;
public int end;
public MySystem()
{
}
public void RunCompress()
{
MD.readNewFile();
MD.StatNewFile();
MyHuffmanTree[] HT=new MyHuffmanTree[MD.getW().length*2];
for(int i=0;i<MD.getW().length*2;i++)
HT[i]=new MyHuffmanTree();
MHT.CreatHuffmanTree(HT,MD.getW());
MBCT=new MyBTree(MD.getChartypefinal(1),MHT.getHC(1));
MBOT.creatBCTree(MBCT,MBCT,MD.getChartypefinal(),MHT.getHC(),2);
}
public void RunDecompress()
{
MD.readCompressFile();
MD.StatCompressFile();
MyHuffmanTree[] HT=new MyHuffmanTree[MD.getW().length*2];
for(int i=0;i<MD.getW().length*2;i++)
HT[i]=new MyHuffmanTree();
MHT.CreatHuffmanTree(HT,MD.getW());
MBHT=new MyBTree(null);
for(int i=1;i<=MD.getW().length;i++)
MBOT.creatBHTree(MBHT,MD.getChartypefinal(i),MHT.getHC(i),0);
end=0;
for(int i=0;i<MD.endstring.length();i++)
end=end*10+MD.endstring.charAt(i)-48;
int j=0;
for(int i=0;i<MD.getHuffman().length();i++)
if(MD.getHuffman().charAt(i)==' ') j++;
out=new int[j];
for(int i=0;i<j;i++)
out[i]=0;
for(int i=0,wl=0,zf;i<MD.getHuffman().length();)
{
zf=0;
if(MD.getHuffman().charAt(i)=='-')
{
zf=1;
i++;
}
while(MD.getHuffman().charAt(i)!=' ')
{
out[wl]=out[wl]*10+MD.getHuffman().charAt(i)-48;
i++;
}
if(zf==1)
out[wl]=-out[wl];
wl++;
i++;
}
this.resethuffman(out,end);
}
public void outhuffman()
{
huffman="";
for(int i=1;i<MD.getChartypefinal().length;i++)
{
huffman=huffman+MD.getChartypefinal(i)+":";
System.out.print(MD.getChartypefinal(i));
System.out.print(":");
for(int j=0;j<MHT.getHC(i).length;j++)
{
huffman=huffman+MHT.getHC(i,j);
System.out.print(MHT.getHC(i,j));
}
huffman=huffman+" ";
System.out.println();
}
}
public void outnumber()
{
number="";
for(int i=1;i<MD.getChartypefinal().length;i++)
{
number=number+MD.getChartypefinal(i)+":"+MD.getW(i-1)+" ";
System.out.print(MD.getChartypefinal(i));
System.out.print(":");
System.out.print(MD.getW(i-1));
System.out.println();
}
}
public void changetohuffman()
{
texthuffman="";
for(int i=0;i<MD.getArticle().length();i++)
{
MBOT.charfind(MBCT,MD.getArticle().charAt(i));
for(int j=0;j<MBOT.keyhuffman.length;j++)
texthuffman =texthuffman +MBOT.keyhuffman[j];
}
System.out.println(texthuffman);
out=new int[(texthuffman.length()-1)/32+1];
end=texthuffman.length()%32;
for(int i=0;i<out.length;i++)
{
out[i]=0;
}
for(int i=0,j=0,a;i<texthuffman.length();i++)
{
a=texthuffman.charAt(i)-48;
out[j]=out[j]|a;
if((i+1)%32==0) j++;
else out[j]<<=1;
}
if(end!=0)
out[texthuffman.length()/32]<<=32-end-1;
outstring="";
for(int i=0;i<out.length;i++)
{
outstring=outstring+out[i]+" ";
}
}
public void resethuffman(int[] out,int end)
{
texthuffman="";
for(int i=0,j=0,num;i<(out.length-1)*32;i++)
{
num=out[j]&0x80000000;
if(num==0)
texthuffman=texthuffman+"0";
else texthuffman=texthuffman+"1";
out[j]<<=1;
if((i+1)%32==0) j++;
}
if(end==0)
{
for(int i=0,num;i<32;i++)
{
num=out[out.length-1]&0x80000000;
if(num==0)
texthuffman=texthuffman+"0";
else texthuffman=texthuffman+"1";
out[out.length-1]<<=1;
}
}
else
{
for(int i=0,num;i<end;i++)
{
num=out[out.length-1]&0x80000000;
if(num==0)
texthuffman=texthuffman+"0";
else texthuffman=texthuffman+"1";
out[out.length-1]<<=1;
}
}
}
public void changetotext()
{
textchar="";
String s;
for(int i=0;i<texthuffman.length();)
{
s="";
while (MBOT.keychar==null)
{
s=s+texthuffman.charAt(i);
MBOT.huffmanfind(MBHT,s,0);
i++;
}
textchar=textchar+MBOT.keychar;
MBOT.keychar=null;
}
System.out.println(textchar);
}
public String toString(String s)
{
return s;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -