- 浏览: 218180 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
microwindlab:
你不应该加 --shell 参数,因为 --shell run ...
由mongodb的维护引发的 grep,awk,sed 与管道的应用 -
Jerryhome:
楼主超牛,值得好好学习
windows系统下的进程监测程序--实现过程记录 -
xb_91674981:
学习一下,模式在程序设计是很重要
《大话设计模式》一书的所有代码和UML类图 -
Jason(aijun):
正在学习,非常感谢分享。
《大话设计模式》一书的所有代码和UML类图 -
wurb_travelsky:
正在看这本书,C#的代码倒也不影响阅读
《大话设计模式》一书的所有代码和UML类图
发短信:手机短信通常a个字就分一页,分页之前在短信之前都要加上(1/n)、(2/n)...,当然啦,这个要加到每页的字数里面。短信放送之前,头部加上“您好:”,结尾要加上“【AB公司】”,这些也当然要加入字数里面,现在请写一方法来显示每条短信的内容。程序的难点在于怎样获取总页数,而且要判断在什么情况下是不能显示所有的信息内容的
package com.fun; import java.util.Scanner; public class MessagePaging { private static final int MaxWordsOnePage = 10; private static final String prefix = "您好:"; private static final String suffix = "【AB公司】"; private String pageBaseStr = "(%d/%d)"; final int baseLen = 3; // ( / ), the three character public static void main(String[] args) { MessagePaging paging = new MessagePaging(); paging.run(); } private void run() { System.out.println("please input message:"); Scanner scanner = new Scanner(System.in); String content; while ((content = scanner.nextLine()).length() != 0) { String result = parseMessage(content); System.out.println("result: " + result); for(int i = 0; i < result.length(); i+=MaxWordsOnePage){ int max = (i+MaxWordsOnePage) >= result.length() ? (result.length()) : (i + MaxWordsOnePage); String str = result.substring(i, max); System.out.println(i + ":" + str + ",len:" + str.length()); } } System.out.println("finish"); } public String parseMessage(String content) { StringBuffer sb = new StringBuffer(content); insertPrefix(sb); appendSuffix(sb); if (!hasNextPage(sb)) { return sb.toString(); } int page = 1; int totalPage = getTotalPage(sb.length()); checkInvalidTotalPage(totalPage,sb.length()); while (page <= totalPage) { insertPageMessage(sb, page, totalPage); //String pageContent = // System.out.println(pageContent); ++page; } return sb.toString(); } private void checkInvalidTotalPage(int totalPage, int contentLength) { if (totalPage < 2) { System.out.println("totalPage " + totalPage + " less than 2"); System.exit(0); } String pageMes = String.format(pageBaseStr, totalPage, totalPage); if (pageMes.length() >= MaxWordsOnePage) { System.out.println("page message:" + pageMes + " is no longer than max words in one page len:" + MaxWordsOnePage); System.exit(0); } } private int getTotalPage(final int contentLength) { int total = calculateMinTotal(contentLength); while (calculateTotal(contentLength, total) != total) { ++total; checkInvalidTotalPage(total,contentLength); } return total; } private int calculateMinTotal(int contentLength){ int tmpTotalPage = contentLength / MaxWordsOnePage + 1; int lowLen = baseLen + 2 * getDigits(tmpTotalPage); return (contentLength + tmpTotalPage*lowLen)/MaxWordsOnePage; } private int calculateTotal(int contentLength, int total) { int totalLength = contentLength + getTotalPageLen(total); int addOne = ((totalLength % MaxWordsOnePage) == 0 ? 0 : 1); return totalLength / MaxWordsOnePage + addOne; } private int getTotalPageLen(int total) { int lowLen = baseLen + 1 + getDigits(total); int highLen = baseLen + 2 * getDigits(total); int sumLen = 0; for (int i = 1; lowLen <= highLen; ++i) { sumLen += lowLen * getLenCount(total, i); ++lowLen; } return sumLen; } private int getLenCount(int total, int i) { int low = (int) Math.pow(10, i - 1); int high = (int) Math.pow(10, i) - 1; if (total >= low && total <= high) { return total - low + 1; } return 9 * low; } // 获取数字的位数 private int getDigits(int total) { int count = 0; while (total != 0) { total /= 10; count++; } return count; } private String insertPageMessage(StringBuffer sb, int page, int totalPage) { String pageMes = String.format(pageBaseStr, page, totalPage); sb.insert((page - 1) * MaxWordsOnePage, pageMes); int max = page * MaxWordsOnePage >= sb.length() ? sb.length() : (page * MaxWordsOnePage); return sb.substring((page - 1) * MaxWordsOnePage, max); } private boolean hasNextPage(StringBuffer sb) { return sb.length() > MaxWordsOnePage; } private StringBuffer insertPrefix(StringBuffer content) { return content.insert(0, prefix); } private StringBuffer appendSuffix(StringBuffer content) { return content.append(suffix); } }
发表评论
-
w3school html 学习笔记
2014-04-25 20:38 911当显示页面时,浏览 ... -
phpcms 笔记
2014-04-24 16:53 867Phpcms v9的pc_webserver一安装上,就不 ... -
dive into python 笔记
2014-02-13 17:23 658第三章 tuple 是没有app ... -
python 爬某高校C++题库小程序
2014-01-18 15:44 1433最近在学习C++,爬下一些题来,用于平时练手。 原理其实也 ... -
centos下饭强--obfucated-openssh sshcenter.info
2013-09-26 21:47 15431. git clone https://github.com ... -
android的【qq通讯录】导出短信,在iphone上恢复
2013-07-14 22:00 5965事件经过:朋友原来用android手机,现在新买了ipho ... -
python的一些记录
2013-05-03 13:53 1204正则表达式的一些常用元字符和语法: http://www. ... -
《程序设计导引及在线实践》学习
2012-05-31 17:13 1038P41 int MyItoa(char s[]) 将s中以 ... -
accelerated c++ 学习笔记
2012-04-26 00:53 1199Chapter 0 A namespace is a ... -
关于foreach与普通for的区别
2012-04-10 22:07 1328请问两者的区别 for(A a : alist) { ... -
学习Linux命令,读《系统程序员成长计划》
2012-03-06 16:41 1345linux命令小结: cat : ... -
base64,日期操作,jexl读取excel
2012-03-06 16:40 219907-22:学习base64的加密和解密,求几天前的日期和求两 ... -
无题。。好代码记录
2011-12-27 11:35 771编写函数expand(s1,s2),将字符串s1中类似于a-z ... -
数据结构:排序
2011-11-09 13:08 951排序一般分为:插入排序,选择排序,交换排序,归并排序和分配排序 ... -
c语言复习笔记
2011-11-07 17:24 2133指针部分: 1.指针类型说明 main(){ in ... -
并发学习笔记(更新中,java编程思想第四版21章)
2011-10-19 23:47 1590实现并发最直接的方式是在操作系统级别使用进程。 并发任 ... -
并发学习笔记(更新中,java编程思想第四版21章)
2011-10-19 21:05 0从今天起记录学习到的知识。 -
RMI 入门
2011-10-07 16:23 1562RMI : remote method invocation, ... -
《大话设计模式》一书的所有代码和UML类图
2011-08-29 16:08 4296如题,把《大话设计模式》一书的所有代码和UML类图写出来,见附 ... -
windows系统下的进程监测程序--实现过程记录
2011-05-26 22:50 6208单位的客服中心的服务器有个接口程序,这三天都出现了自动退出的情 ...
相关推荐
- 垃圾回收机制:GC算法,新生代和老年代,可达性分析。 - 对象的生命周期:创建、使用、可达性分析、垃圾回收。 6. **IO流**: - 流的概念:输入流和输出流,字节流和字符流。 - 文件操作:File类,文件的读写...
### 知识点:编程基础之函数与过程抽象 #### 标题和描述解析 标题指出了文档内容是关于...通过这些练习题,编程学习者可以加强对函数与过程抽象概念的理解和应用,为进一步深入学习复杂编程问题和算法打下坚实的基础。
本资源提供了中国移动校园招聘计算机专业通信专业笔试题库,涵盖了移动智能网系统、SCP、SMP、SMAP、VC 等概念,包括填空题、选择题、简答题等多种题型。本资源对移动智能网系统的知识点进行了详细的解释和描述,为...
【C语言编程题】主要涉及了C语言的基本编程技巧和数据结构的应用,下面将详细解析题目中的三个问题。 1. **短信计费用**: 这道题目是关于计算短信费用的问题。每条短信的费用是0.1元,但每条短信的内容不能超过70...
【SHW2树应用类讨论题1】主要探讨了如何高效地解决大数据量下的短信查重问题,这里涉及到了散列(哈希)方法、哈夫曼树编码以及字典树(Trie树)等数据结构和算法。下面将详细阐述这些知识点。 1. 散列(Hash)法:...
4. **数据结构与算法**:笔试中通常会有编程相关的题目,考生需要熟练掌握常见数据结构(如链表、树、图、队列、栈)和算法(排序、搜索、递归等),并能灵活应用解决实际问题。 5. **计算机基础**:包括计算机硬件...
【C语言编程题.pdf】 本文件包含三个C语言编程题目,分别是短信计费问题、集体照问题和跳格问题。 1. **短信计费问题**: 这个问题是关于计算用户发送短信的总费用。如果一条短信超过70个字符,大多数手机会将其...
11. **独立事件概率**:第十一题,两条短信在5秒内进入手机,如果时间差小于2秒则手机受到干扰,计算这个概率。 12. **抛物线性质**:第十二题涉及抛物线上的两点与中点到准线的距离,利用抛物线的性质求解最大值。...
Java高级面试题汇总及答案 以下是 Java 高级面试题汇总及答案的相关知识点: ...1. 使用外观模式来隐藏系统的复杂性,例如创建阿里短信接口、邮件接口、微信推送接口,并使用外观模式来隐藏实际的系统的复杂性。
2. SMS短信的原理:SMS(Short Message Service)短信基于GSM网络,通过短信服务中心(SMSC)进行存储转发,将文本信息从发送方移动终端传输到接收方移动终端。 3. repeater、bridge、router的区别: - Repeater...
如果这个课后习题答案.zip文件与某个特定的课程或教材相关,那么可能涉及的IT知识点会更加具体,例如编程语言的练习题、网络原理问题、数据库查询等等。但鉴于当前提供的信息有限,无法给出更详细的解答。如果你能...
【深圳杯2012夏令营竞赛题】是一系列挑战性的编程竞赛题目,旨在锻炼参赛者在IT领域的算法设计和问题解决能力。这些题目涵盖了数据处理、数据分析以及信息技术的创新应用,对于提升IT专业人士的技术素养具有极大的...
包括指针的移动、排序算法、链表、二叉树的遍历或图的遍历等。 此外,Android面试题还包括 Android 手机操作系统的四层架构、Android dvm 的进程和 Linux 的进程、SIM 卡的 EF 文件、一条最长的短信息、Android 中...
此外,"Abbysent少于101条短信"(存在一天最多发送100条短信的命题)需要正确理解否定和量词的关系。121是11的平方,所以它不是完全平方数。 再比如,命题的真假判断,像 "288大于256且288大于128"(真命题)、"Ch...