TheSeventhWeekJavaText
如何用二维数组绘制五子棋盘
在定义一个棋盘类,声明一个二维字符数组,为每一个数组元素赋值为“+”,打印输出就是一个简单地棋盘,如下图:

然后定义BufferedReader的实例对象br,可以从平面读入一个字符串,用户输入的坐标当以“,”隔开,所以这个字符串可以用String类的split()函数分割为两个字符串,这里一“,”分割便可。然后分别将左边和右边的字符转化为数字,将对应的小标的字符数组的元素赋值为“●”,继续打印输出二维数组,就可以实现下棋。
编写程序将整数转化为汉字读法
第一步需要定义两个字符串数组,一个表示单位的数组unit[]存储单位“个”“十”“百”“千”“万”等,由于“个”我们通常不用读出来,所以可以用空字符代替。另一个字符串数字存储0-9的汉字。然后我们需要将一个整数的每一位上的数字分隔开来,如果是整型的变量,可以用求余的方法取出每一位上的数字,代码如下:
number //待分割的数字
int array[] = new int[20]
do{
array[i] = number%10;
number/=10;
}while(number>0);
如果是字符串变量可以直接调用charAt()方法取出字符串中的字符,然后取出的字符减区字符0(‘0’表示字符0)等到该字符所代表的数字。然后根据数值取出对应汉字,根据位数取出单位,数值汉字与单位组合成一个新的字符串,然后将每一个字符串连接起来就是整数的汉字读法。具体还有很多细节问题需要处理,比如遇到零的时候,多个零只读一个零;还有万位以后的单位等等。核心代码代码如下:

测试结果为:


对于生活中的钱的读法,我们通常只会读出两位小数,所以将整数部分读出加上单位元,然后加上小时部分的内容就可以了,十分位上的数字加上单位角,百分位上的数字加上单位分,百分位是零不读,十分是零也不读。代码如下:

测试结果:


大数运算
java语言中的数据类型都是有取值范围的,如果超出这个范围,将不再适用。所以需要我们自己定义大数字类型。一种方法是可以用数组来储存大数字,数组元素的下标对应于该元素数值的单位。数组是不能直接进行运算的,所以我们需要自己写运算过程。在加减运算中,只需要对每一个元素的相邻的两个元素有操作,其他元素没有影响。
加法部分代码如下:

随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中。
- 程序设计思想:在文件头中导入javax.swing.JOptionPane类。在main方法中声明一个整型的数组,用循环语句调用Math类的函数random()为每一个元素随机生成一个值,并将每一个元素的值链接称为一个字符串。调用JoptionPane类的静态函数showMessageDialog()显示字符串。然后用循环算出数组的每一个元素相加的值,继续用showMessageDialog()函数显示结果。
- 程序流程图:

- 程序源代码:
import javax.swing.JOptionPane;
public class ArrayAdd {
public static void main(String[] args) {
// TODO Auto-generated method stub
int array[] = new int[10];
int sum = 0;
String input = "";
String add = "";
for(int i = 0; i < array.length; i++)
{
array[i] = (int)(Math.random() * 100);
sum += array[i];
input += array[i] + " ";
if(i != array.length-1)
add += array[i] + "+";
else
add += array[i];
}
JOptionPane.showMessageDialog(null, input);
JOptionPane.showMessageDialog(null, add + "="+sum);
}
}
结果截图:


- 编程总结:学习编程需要不断努力探索,总结经验,才能提高编程能力。
TheSeventhWeekJavaText的更多相关文章
随机推荐
- Cocoa框架
Cocoa提供了用于存放数字和字符串的通用数据类型的实际的类.非正式地可以将这些称为值类或基本值类. Cocoa框架本身封装了三个独立的框架:Foundation基本框架.AppKit框架和核心数据框 ...
- sqlserver生成随机数 2011-12-21 15:47 QQ空间
-创建视图 create view myview as select re=rand() --自定义函数:取得指定范围的随机数 create function mydata( @a int, @b i ...
- 深入浅出Mybatis-sql自动生成
本文提供了一种自动生成sql语句的方法,它针对的对象是有主键或唯一索引的单表,提供的操作有增.删.改.查4种.理解本文和本文的提供的代码需要有java注解的知识,因为本文是基于注解生成sql的.本文适 ...
- [置顶] cuzy sdk之起源
程序员都熟知一句话, “不要重复制造轮子".应该说互联网的繁荣和普及给刚入门的软件工程师还是带来很大的好处的.尤其是github,sourceforge在国内日渐的流行. 在学习iOS和an ...
- 使用IDEA开发
IDEA 在使用IDEA之前,我是eclipse的忠实用户.无论是最初学习java,还是后来用python/golang. eclipse丰富的插件已经满足了我大部分的使用,直到在师弟的大力推荐下使用 ...
- Linux-gate.so技术细节
1. linux-gate.so是什么参考这里:http://www.trilithium.com/johan/2005/08/linux-gate/简而言之,linux-gate.so是为了实现用户 ...
- [ios3-地图] 如何在iOS地图上高效的显示大量数据 [转]
[转至:http://blog.csdn.net/pjk1129/article/details/17358337] 原文:How To Efficiently Display Large Amoun ...
- Microsoft Edge与Google Chrome那些不同的举止
以下针对14393版本Edge与Chrome 54 html dom/select的如果options里没有符合的值时edge会选择第一个,chrome(54)会置空选项 html dom/input ...
- Flexible 弹性盒子模型之CSS flex-wrap 属性
实例 让弹性盒元素在必要的时候拆行: display:flex; flex-wrap: wrap; 复制 效果预览 浏览器支持 表格中的数字表示支持该属性的第一个浏览器的版本号. 紧跟在 -webki ...
- HTML5之Audio音频标签学习
HTML5中的新元素标签 src:音频文件路径. autobuffer:设置是否在页面加载时自动缓冲音频. autoplay:设置音频是否自动播放. loop:设置音频是否要循环播放. control ...