学号20175313 《实现Linux下cp XXX1 XXX2的功能(二)》第九周
2024-10-20 05:46:55
MyCP2
一、题目要求
编写MyCP2.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP2支持两个参数:
- java MyCP2 -tx XXX1.txt XXX2.bin 用来把文本文件(内容为十进制数字)转化为二进制文件
- java MyCP2 -xt XXX1.bin XXX2.txt 用来二进制文件把转化为文本文件(内容为十进制数字)
二、题目理解
Linux下cp XXX1 XXX2的功能:在命令行输入man cp
进行查看
三、需求分析
- 支持两个参数
- -tx参数:将文本文件(十进制数)转化为二进制文件
- -xt参数:将二进制文件转化为文本文件(十进制数)
- 支持在命令行中输入三个字符串
- 第一个字符串:文件的转化形式
- 第二个字符串:源文件
- 第三个字符串:目标文件
- 将二进制数转化为十进制数
- 将十进制数转化为二进制数
四、设计思路
- 问题1:如何实现在命令行中输入参数?
教材182页Example8_14.java中略微提到一点点。
- 解决方法:arges[]数组的使用
- 问题2:如何实现二进制文件与文本文件的相互转化?
- 解决方法:
二进制数转十进制数:
十进制数转二进制数:
五、伪代码分析
- 读取命令行输入的3个参数:arges[0]代表转化形式,arges[1]代表源文件,arges[2]代表目标文件。
- 读取源文件中所有内容:
- 当args[0]是“-tx”时,将读取的十进制文本转化为二进制数
- 当arges[1]是“-xt”时,将读取的二进制文本转化为十进制数
六、代码链接
七、代码实现过程中遇到的问题
问题1:读取长度readLength没有初始化。
- 解决方法:以前用C语言习惯了变量不进行初始化,以为没有问题,看到报错后,我还是惯常的没有考虑起初的初始化问题,而是一直在找程序中为什么readLength没有被赋值的问题。找了好久感觉没有bug啊,然后就死马当作活马医的让起初的readLength=0,进行了初始化,结果不报错了。看来java对于成员变量的初始化还是严格控制的。
问题2:程序编译时出现“编码GBK的不可映射字符”报错
- 我网上找了好多解决方法都没有效果,所以这个问题到现在都没有解决,所以后面我就在虚拟机上进行的编译运行。
问题3:直接将字符串与给定字符串常量进行比较,忘记应该使用equals方法,导致程序直接输出“Error”,然后退出。
解决方法:调用equals方法进行字符串之间的比较
- 注意:
- 调用
public static String toBinaryString(int i)
方法进行十进制数转二进制数时,输入的参数的整数型,所以应该将字符型ch[0]-'0',将其字符转化为整数。 - 调用
public static int parseInt(String s,int radix)
方法进行二进制转十进制数时,返回的时int,所以应该在后面加上""
,使其转化为String型,后赋值给num。
- 调用
八、运行结果截图
九、心得体会
- 刚开始不太理解题目的意思,然后就上网查找相关问题的博客,看到一位学长的博客,感觉写的很有道理,但是理解起来有点困难。我花了大量的时间去理解他的代码。
- 后来才发现他的不符合题目的要求。学长应该是太过优秀,所以想的稍微偏复杂。
- 虽然学长的代码不太符合题目要求,但是我从中学习到了很多适合这个题目所要用的方法,所以在原来的基础上进行稍微的修改,很快就写出来符合题意的代码。
十、参考资料
- 《Java2实用教程(第五版)》
- arges[]数组的使用
- JDKTM 6 Documentation
最新文章
- sizzle编译函数
- win7系统 .chm文件打不开的解决办法
- 优化 PHP 代码建议
- BZOJ4428 : [Nwerc2015]Debugging调试
- USB协议分析
- 学习使用Markdown标记语言
- hdu 5402 Travelling Salesman Problem(大模拟)
- 使用TcpTrace小工具截获Web Service的SOAP报文
- bzoj3728: PA2014Final Zarowki
- [Linux 使用(2)] 64位Linux下安装jboss-as-7.1 以及jdk1.7
- 在ASP.NET开发中一些单词的标准缩写
- HDU 4911 Inversion 树状数组求逆序数对
- Flex内存泄露解决方法和内存释放优化原则
- python语法_模块_re(正则表达)
- JavaBean到JSon格式的转换例子的代码
- 转 tomcat+nginx+redis实现均衡负载、session共享(二)
- CentOS7中安装redis5.0
- 【BZOJ2229】[ZJOI2011]最小割(网络流,最小割树)
- xlua 实现协程替换Unity中的协程
- html框内文字垂直居中的方法
热门文章
- 第四章:Oracle12c 数据库在linux环境安装
- SpringBoot图片上传(四) 一个input上传N张图,支持各种类型
- SQL 概述
- ERROR: invalid byte sequence for encoding ";UTF8";: 0x00
- Linux history显示时间/用户/ip的设置
- Python学习(四十)—— Djago之认证系统
- mybatis循环、mybatis传map
- Angularjs判断页面是否已经渲染结束(动态给标签长度)
- vue_ajax 请求
- JMM(java Memory Model)到底是什么?