java作业 06
1.阅读QiPan.java示例程序了解如何利用二维数组和循环语句绘制五子棋盘。
import java.io.*;
public class QiPan
{
//定义一个二维数组来充当棋盘
private String[][] board;
//定义棋盘的大小
private static int BOARD_SIZE = 15;
public void initBoard()
{
//初始化棋盘数组
board = new String[BOARD_SIZE][BOARD_SIZE];
//把每个元素赋为"╋",用于在控制台画出棋盘
for (int i = 0 ; i < BOARD_SIZE ; i++)
{
for ( int j = 0 ; j < BOARD_SIZE ; j++)
{
board[i][j] = "╋";
}
}
}
//在控制台输出棋盘的方法
public void printBoard()
{
//打印每个数组元素
for (int i = 0 ; i < BOARD_SIZE ; i++)
{
for ( int j = 0 ; j < BOARD_SIZE ; j++)
{
//打印数组元素后不换行
System.out.print(board[i][j]);
}
//每打印完一行数组元素后输出一个换行符
System.out.print("\n");
}
}
public static void main(String[] args)throws Exception
{
QiPan gb = new QiPan();
gb.initBoard();
gb.printBoard();
//这是用于获取键盘输入的方法
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String inputStr = null;
System.out.println("请输入您下棋的座标,应以x,y的格式:");
//br.readLine():每当在键盘上输入一行内容按回车,刚输入的内容将被br读取到。
while ((inputStr = br.readLine()) != null)
{
//将用户输入的字符串以逗号(,)作为分隔符,分隔成2个字符串
String[] posStrArr = inputStr.split(",");
//将2个字符串转换成用户下棋的座标
int xPos = Integer.parseInt(posStrArr[0]);
int yPos = Integer.parseInt(posStrArr[1]);
//把对应的数组元素赋为"●"。
gb.board[xPos - 1][yPos - 1] = "●";
/*
电脑随机生成2个整数,作为电脑下棋的座标,赋给board数组。
还涉及
1.座标的有效性,只能是数字,不能超出棋盘范围
2.如果下的棋的点,不能重复下棋。
3.每次下棋后,需要扫描谁赢了
*/
gb.printBoard();
System.out.println("请输入您下棋的座标,应以x,y的格式:");
}
}
}
实验结果截图:
2、请编写一个程序,将一个整数转化为汉字读法。
实验思路:
1、把0-9的汉字读法写到一个数组
2、把位数的读法写到另一个数组
3、用户输入一个数,以字符串的形式输入,再转化为对象数组
4、用j标记第几位,把字符转化为数字,不是第一位还要加上相应的位数读法
5、输出用一个字符串连接起来
源程序:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Hanzidufa {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
char b[]={'零','一','二','三','四','五','六','七','八','九'};
char c[]={'十','百','千','万','亿'};
System.out.println("请输入一个数:");
BufferedReader number=new BufferedReader(new InputStreamReader(System.in));
String num=number.readLine();
//int Point=num.indexOf(".");
char[] a=num.toCharArray();
String output="";
int n=a.length,j=0;
//System.out.println(n);
for(int i=0;i<n;i++){
j=n-i;
int d=a[i]-'0';
if(j==1)
output+=b[d];
else{
output+=b[d];
output+=c[j-2];
}
}
System.out.print(output);
}
}
结果截图:
3 将数字表示的金额改为汉字表达
思路:
1、两个数组,一个是大写的数字,一个是位数
2、输入金额,并转化为数组
3、找到小数点的位置
4、小数点之前读,从第一个到小数点之前读,小数点之后最多有两位
源代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class JinER {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
char b[]={'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};
char c[]={'拾','佰','仟','万','亿'};
System.out.println("请输入金额:");
BufferedReader number=new BufferedReader(new InputStreamReader(System.in));
String num=number.readLine();
int Point=num.indexOf(".");//下标
char[] a=num.toCharArray();
String output="";
int n=a.length,j=0;
for(int i=0;i<Point;i++){
j=Point-i;
int d=a[i]-'0';
if(j==1)
output+=b[d];
else{
output+=b[d];
output+=c[j-2];
}
}
output+="元";
if(a.length>Point){
int d=a[Point+1]-'0';
output+=b[d]+"角";
if((Point+3)==a.length)
{
int e=a[Point+2]-'0';
output+=b[e]+"分";
}
}
System.out.print(output);
}
}
程序结果截图:
4、随机生成10个数,填充一个数组,然后用消息框输出数组内容,接着计算数组元素的和将计算结果也显示在消息框中。
程序设计思路:
1、创建一个整型数组,定义字符串output,定义变量b=0
2、用Math.random()生成随机数
3、对话框输出这10个随机数
3、每个元素相加
4、用对话框输出和
流程图:
源代码:
import java.util.Random;
import javax.swing.JOptionPane;
public class SuiJiShuZu {
public static void main(String[] args) {
// TODO Auto-generated method stub
String output="";
int a[]=new int[10];
int b=0;
output+="生成的10个随机数是:\n";
for(int i=0;i<a.length;i++){
a[i]=(int) (Math.random()*1000);
output+=a[i]+" ";
}
JOptionPane.showMessageDialog(null, output,"information",JOptionPane.INFORMATION_MESSAGE);
for(int i=0;i<a.length;i++){
b+=a[i];
}
output+="\n\n 每个数相加结果为:"+b;
JOptionPane.showMessageDialog(null,output);
}
}
5、前面几讲介绍过JDK所提供的BigInteger能完成大数计算,如果不用它,直接使用数组表达大数,你能实现相同的功能吗?
要求: (1)用你的大数类实现加和减两个功能
(2)阅读BigInteger类源码,弄清楚它是使用什么算法实现加减乘除四种运算的?
(3)通过互联网查找大数运算的相关资料,给你的大数类添加乘、除、求阶乘等其它功能。
①源代码:
//用数组实现大数的加法和减法