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)通过互联网查找大数运算的相关资料,给你的大数类添加乘、除、求阶乘等其它功能。

 

①源代码:

//用数组实现大数的加法和减法

package Work;

import java.util.Scanner;

public class BigNum {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
      
      int aa,bb;
      System.out.println("用数组实现大数的加法和减法");
      System.out.print("请输入大数a:");
      Scanner scan=new Scanner(System.in);
      String a=scan.next();
      System.out.print("请输入大数b:");
     String b=scan.next();
     int A[]=new int[100];
     int B[]=new int[100];
     
     for(int i=0;i<a.length();i++){
         A[i]=(int) ((a.charAt(i)-48)*Math.pow(10,a.length()-i-1));
     }
     for(int i=0;i<b.length();i++){
         B[i]=(int) ((b.charAt(i)-48)*Math.pow(10,b.length()-i-1));
     }
     int sum=0;
     int sub=0;
     for(int i=0;i<a.length();i++){
         sum+=A[i]+B[i];
         sub+=A[i]-B[i];
     }
     System.out.print("a+b="+sum);
      System.out.println();
      System.out.print("a-b="+sub);
    }

}
复制代码

②运行结果截图:

 

 

(2)阅读BigInteger类源码,弄清楚它是使用什么算法实现加减乘除四种运算的?

BigInteger是不可变的任意精度的整数。所有操作中,都以二进制补码形式表示BigInteger(如Java的基本整数类型)。BigInteger 提供所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、位操作以及一些其他操作。

(3)通过互联网查找大数运算的相关资料,给你的大数类添加乘、除、求阶乘等其它功能。

①源代码:

//用数组实现大数的加法和减法

复制代码
package Work;

import java.util.Scanner;
import java.math.BigDecimal;

public class BigNum {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
      
      int aa,bb;
      System.out.println("用数组实现大数的加法和减法");
      System.out.print("请输入大数a:");
      Scanner scan=new Scanner(System.in);
      String a=scan.next();
      System.out.print("请输入大数b:");
     String b=scan.next();
     int A[]=new int[100];
     int B[]=new int[100];
     //用于复杂的乘法和除法
     BigDecimal b1 = new BigDecimal(a) ;
     BigDecimal b2 = new BigDecimal(b) ;
     for(int i=0;i<a.length();i++){
         A[i]=(int) ((a.charAt(i)-48)*Math.pow(10,a.length()-i-1));
     }
     for(int i=0;i<b.length();i++){
         B[i]=(int) ((b.charAt(i)-48)*Math.pow(10,b.length()-i-1));
     }
     int sum=0;
     int sub=0;
     for(int i=0;i<a.length();i++){
         sum+=A[i]+B[i];
         sub+=A[i]-B[i];
     }
     System.out.print("a+b="+sum);
      System.out.println();
      System.out.print("a-b="+sub);
      System.out.println();
      System.out.print("a*b="+b1.multiply(b2));
      System.out.println();
      System.out.print("a/b="+b1.divideToIntegralValue(b2));
    }
    

}
复制代码

②运行结果截图:


   

posted on 2016-11-06 18:46  王甜甜的小摩托  阅读(219)  评论(0编辑  收藏  举报

导航