动手动脑,第六次Tutorial——数组
这次的Tutorial讲解了Java中如何进行数组操作,包括数组声明创建使用和赋值运算,写这篇文章的目的就是通过实际运用已达到对数组使用的更加熟练,下面是实践代码之后的感悟与总结:
动手动脑1:PassArray.java
PassArray.java
观察并分析程序的输出结果:
可以得出如下结论:
- 按引用传递与按值传送数组类型方法参数的最大关键在于:
- 使用前者时,如果方法中有代码更改了数组元素的值,实际上是直接修改了原始的数组元素。
- 使用后者则没有这个问题,方法体中修改的仅是原始数组元素的一个拷贝。
动手动脑2:QiPan.java
QiPan.java
程序运行输出结果:
棋盘是如何表示的?
整个棋盘是用一个个“+”组成的,共15行15列,所以可以使用一个15X15的二维数组表示,用户下棋的位置用行列位置表示,这样用户下棋的位置所对应的数组元素将由“+”变为“·”。棋盘类结构如下:
1. 私有静态变量BOARD_SIZE,初始值为15;
2. 私有变量二维字符串数组board[][];
3. 共有方法InitBoard(),初始化棋盘;
4. 共有方法PrintBoard(),打印棋盘;
动手动脑3:IntToChinese.java
问题描述:
请编写一个程序将一个整数转换为汉字读法字符串。比如“1123”转换为“一千一百二十三”。
设计思想:
假如说这个整数最高位数不超过9位,那么问题其实并不是很复杂。实现这个功能的方法可以这么定义:
- 定义一个大小为10的字符串型数组chineseNumber,初值为:"零","一","二","三","四","五","六","七","八","九";
- 定义一个大小为5的字符串型数组chinesePost,初值为:"","十","百","千","万";
- 对函数获取的参数num,进行拆解分析位数以及每位上的数字,num如果是String类型的可能会方便一些,结合上面两个数组进行转化汉字即可;
源代码:
IntToChinese.java
运行结果:
拓展程序:
更进一步,能否将数字表示的金额改为“汉字表达? 比如将“¥123.52”转换为“壹佰贰拾叁元伍角贰分”。
实现代码:
String ToBigLetter(double money)
结果截图:
设计思想:
只需将小数点前面与后面分开,然后分别拆分即可,所用到的方法有:
String.subString();
String.indexOf();
具体思想可根据代码中注释加深理解。
动手动脑4:BigNumber.java
问题描述:
利用数组实现大数相加减。
设计思想:
一个数组元素存取一位数字,无论加法还是减法,都是从低位开始运算,即数组的最后一个元素开始运算,加法满10进1,每个数组元素的最高值为9,相加的和a超过9就让前一个数组+a/10,新的元素值就是a%10,如:
源代码:
BigNumber.java
运行结果: