zoukankan      html  css  js  c++  java
  • 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(" ");
    }
    }
    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个随机数是: ";
    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+=" 每个数相加结果为:"+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));
        }
        
    
    }
    复制代码

    ②运行结果截图:

    
    

       

  • 相关阅读:
    在 Linux 上如何挂载 qcow2 磁盘镜像
    CentOS ISO 下载地址
    构建ceph deb 安装包
    ceph 源码安装 configure: error: "Can't find boost spirit headers"
    sudo: 没有终端存在,且未指定 askpass 程序
    ubuntu14.04 下出现 libmysqlclient.so.20 找不到问题
    binary-tree-postorder-traversal leetcode C++
    binary-tree-preorder-traversal leetcode C++
    candy leetcode C++
    clone-graph leetcode C++
  • 原文地址:https://www.cnblogs.com/jingxiaopu/p/6034232.html
Copyright © 2011-2022 走看看