Java发电报

电报,在我心里有一段情缘。还在读高中时,当时情窦初开,和一个同班女生相互产生情愫。好景不长,被老师和其家长知晓,因此每次与她接触都被刨根问底。天无绝人之路,她母亲是在电信局(中国电信前身)上班的,对电报十分精通,对电报码背诵如流。或许在她母亲影响下,她也对电报的略知一二。后来,她教会了我打电报,往后的一段日子我俩之间的交流就以电报的方式进行。现在回想起来,还挺甜美的。奈何甜美时光总是短暂的,一次在传纸条时,被班主任抓住现行,还当场翻阅了纸条内容,如下:
我:6638071903620007058203577820271026510577131658947193175871089976000163864170719317589975
她:117007119976045125140230601599750141042701714104251402301827801007351367684961419981
我:1432614106372827327509562579741941702579
她:11704104997600086015000824149975
我:00086015000824149975

班主任看后一脸茫然,随后警告我们上课要注意听课不要搞小动作。我们还在为自己的聪明才智欢喜时,班主任在下午的家长会时把纸条给了她母亲,还教育到说这学期她女儿表现不错就是上课要更认真,不要和同学传纸条。她母亲何等人物,看了纸条内容已然明白其中玄机……果不出其然,被抓了个现行,后来我俩都被班主任和家里批斗得很惨。
时间一晃已经过了10多年,我和她自高中毕业后联系就少了,乃至后面没了联系。如今每每回想,总会有一丝甘甜涌上心头。为了怀念逝去的甜美,今日特用Java编写程序,模拟发电报,从技术角度来说就是拆分字符串,然后查数据库找到对应的电报码而以,电报码资源可以网上搜索下载然后插入数据库即可。代码如下:

// Java Telegram
Java
// An highlighted block
package org.algorithm;

import java.util.List;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
//import java.sql.Statement;
import java.sql.SQLException;

public class TransTelegram
{
    private ResultSet rs =null;
    private PreparedStatement pstmt =null;
    private void analysisTelegram(StringBuffer s,int flag)
    {
        Connection con = new ConMariadb().createCon();
        List telegram = new AchieveTelegram().checkTelegram(s,flag);//获取电报原文
        String sql = "";
        String col = "";
        if(flag==0) //0表示电报翻译字符
        {
            sql = "select ch_word from chinesecode where ch_code=?";
            col = "ch_word";
        }
        if(flag==1)//1表示字符翻译成电报
        {
            sql = "select ch_code from chinesecode where ch_word=?";
            col = "ch_code";
        }
        System.out.println();
        System.out.print("电报译文:");
        try
        {
            for(int b=0;b<telegram.size();b++)
            {
                pstmt = con.prepareStatement(sql);
                pstmt.setString(1, telegram.get(b).toString());
                rs = pstmt.executeQuery();
                while(rs.next())
                {
                    System.out.print(rs.getString(col));
                }
            }
            System.out.println();
        }
        catch(SQLException e)
        {
            e.printStackTrace();
        }
        finally
        {
            new ConMariadb().closePreStmt(pstmt);
            new ConMariadb().colseResult(rs);
            new ConMariadb().closeCon(con);
        }
        System.out.println();
		/*
		for(int a=0;a
    }
    public static void main(String args[])
    {
        //StringBuffer s = new StringBuffer("寂寞红尘,闯进了你月下霓裳的思念。孤独身影,撞进了你往日校园的时光。岁月的车轮碾过了日日夜夜,春秋冬夏;流年的轮回送走了晨起暮霞,似水年华;青春的步履渐渐苍老了不再年轻的容瑕。你在美利坚还好吗?");
        StringBuffer s = new StringBuffer("不见不散。");
        int f = 1;//定义标识位,0表示电报翻译字符,1表示字符翻译成电报
        System.out.print("电报原文:"+s.toString());
        new TransTelegram().analysisTelegram(s,f);
    }
}

// Java Telegram
Java
// An highlighted block
package org.algorithm;

import java.util.regex.Pattern;
import java.util.List;
import java.util.ArrayList;

public class AchieveTelegram
{
    private int len = 4;//定义分割长度,由于电报码由4位数字组成,故以4为单位分割
    private int start = 0;//定义初始位置
    private List teleCode = new ArrayList();
    //对电报进行过滤,剔除非数字的电报
    public List checkTelegram(StringBuffer tel,int f)
    {
        boolean flag = true;
        List t = new ArrayList();
        if(f==0)
        {
            Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
            flag = pattern.matcher(tel.toString()).matches();
        }
        if(flag&&f==0)
        {
            t = receTelegram(tel);
        }
        else if(flag&&f==1)
        {
            t = receString(tel);
        }
        else
        {
            System.out.println();
            t.add("");
            System.out.println("发送电报【"+tel.toString()+"】非法无法发送。电报必须纯数字。");
        }
        return t;
        //System.out.println(flag);
    }
    //接收到字符,然后按字符进行拆分
    private List receString(StringBuffer s)
    {
        int ss = 0;
        int nn = 1;
        while(s.length()>0)
        {
            teleCode.add(s.substring(ss, nn));
            s.delete(ss, nn);
        }
        return teleCode;
    }
    //接收到电报码,然后拆分进行解析
    private List receTelegram(StringBuffer tel)
    {
        while(tel.length()>0)
        {
            //teleCode.add(tel.substring(start, len));
            //teleCode.add(tel.substring(start));
            //当字符串大于等于4时,结束位置为4
            if(tel.length()>=4)
            {
                teleCode.add(tel.substring(start, len));
                tel.delete(start, len);
            }
            //当字符串小于4时,结束位置为字符串的长度
            else
            {
                teleCode.add(tel.substring(start, tel.length()));
                tel.delete(start, tel.length());
            }
        }
		/*
		for(int i=0;i
        return teleCode;
    }

你可能感兴趣的:(java)