zoukankan      html  css  js  c++  java
  • java-五子棋棋盘排布 && 数字转换成汉字 &&大数计算

    1.动手动脑(五子棋棋盘排布)

    (1)源程序

     1 import java.io.*;
     2 
     3 public class QiPan
     4 {
     5     //定义一个二维数组来充当棋盘
     6     private String[][] board;
     7     //定义棋盘的大小(宏定义)
     8     private static int BOARD_SIZE = 15;
     9     
    10     //初始化棋盘
    11     public void initBoard()
    12     {
    13         //初始化棋盘数组
    14         board = new String[BOARD_SIZE][BOARD_SIZE];
    15         //把每个元素赋为"╋",用于在控制台画出棋盘
    16         for (int i = 0 ; i < BOARD_SIZE ; i++)
    17         {
    18             for ( int j = 0 ; j < BOARD_SIZE ; j++)
    19             {
    20                 board[i][j] = "╋";
    21             }
    22         }
    23     }
    24     //在控制台输出棋盘的方法
    25     public void printBoard()
    26     {
    27         //打印每个数组元素
    28         for (int i = 0 ; i < BOARD_SIZE ; i++)
    29         {
    30             for ( int j = 0 ; j < BOARD_SIZE ; j++)
    31             {
    32                 //打印数组元素后不换行
    33                 System.out.print(board[i][j]);
    34             }
    35             //每打印完一行数组元素后输出一个换行符
    36             System.out.print("
    ");
    37         }
    38     }
    39     public static void main(String[] args)throws Exception
    40     {
    41         QiPan gb = new QiPan();
    42         gb.initBoard();
    43         gb.printBoard();
    44         //这是用于获取键盘输入的方法
    45         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    46         String inputStr = null;
    47                 System.out.println("请输入您下棋的座标,应以x,y的格式:");
    48         //br.readLine():每当在键盘上输入一行内容按回车,刚输入的内容将被br读取到。
    49         while ((inputStr = br.readLine()) != null)
    50         {
    51             //将用户输入的字符串以逗号(,)作为分隔符,分隔成2个字符串
    52             String[] posStrArr = inputStr.split(",");
    53             //将2个字符串转换成用户下棋的座标
    54             int xPos = Integer.parseInt(posStrArr[0]);
    55             int yPos = Integer.parseInt(posStrArr[1]);
    56             //把对应的数组元素赋为"●"。
    57             gb.board[xPos - 1][yPos - 1] = "●";    
    58             
    59             while(true)
    60             {
    61                  int xvalue = (int) ( Math.random() * 15 );
    62                  int yvalue = (int) ( Math.random() * 15 );
    63                  if(gb.board[xvalue - 1][yvalue - 1] .equals("●")==false||
    64                          gb.board[xPos - 1][yPos - 1].equals("*")==false)
    65                  {
    66                      gb.board[xvalue - 1][yvalue - 1] = "*";
    67                      break;
    68                  }
    69             }
    70             
    71             /*
    72              电脑随机生成2个整数,作为电脑下棋的座标,赋给board数组。
    73              还涉及
    74                 1.座标的有效性,只能是数字,不能超出棋盘范围
    75                 2.如果下的棋的点,不能重复下棋。
    76                 3.每次下棋后,需要扫描谁赢了
    77              */
    78             gb.printBoard();
    79             System.out.println("请输入您下棋的座标,应以x,y的格式:");
    80         }
    81     }
    82 }

    (2)实验截图

    2.动手动脑(数字转换成汉字)

    (1)源程序

     1 public class Num2Rmb
     2 {
     3     private String[] hanArr = {"零" , "壹" , "贰" , "叁" , "肆" , 
     4         "伍" , "陆" , "柒" , "捌" , "玖"};
     5     private String[] unitArr = {"十" , "百" , "千","万","十万","百万"};
     6 
     7     /**
     8      * 把一个四位的数字字符串变成汉字字符串
     9      * @param numStr 需要被转换的四位的数字字符串
    10      * @return 四位的数字字符串被转换成的汉字字符串。
    11      */
    12     private String toHanStr(String numStr)
    13     {
    14         String result = "";
    15         int numLen = numStr.length();
    16         //依次遍历数字字符串的每一位数字
    17         for (int i = 0 ; i < numLen ; i++ )
    18         {
    19             //把char型数字转换成的int型数字,因为它们的ASCII码值恰好相差48
    20             //因此把char型数字减去48得到int型数字,例如'4'被转换成4。
    21             int num = numStr.charAt(i) - 48;
    22             //如果不是最后一位数字,而且数字不是零,则需要添加单位(千、百、十)
    23             if ( i != numLen - 1 && num != 0)
    24             {
    25                 result += hanArr[num] + unitArr[numLen - 2 - i];
    26             }
    27             //否则不要添加单位
    28             else
    29             {
    30                 
    31                 //上一个数是否为“零”,不为“零”时就添加
    32                 if(result.length()>0 && hanArr[num].equals("零") && result.charAt(result.length()-1)=='零')
    33                     continue;
    34                 result += hanArr[num];
    35             }
    36         }
    37         //只有个位数,直接返回
    38         if(result.length()==1)
    39             return result;
    40         
    41         int index=result.length()-1;
    42         while(result.charAt(index)=='零'){
    43             index--;
    44         }
    45         if(index!=result.length()-1)
    46             return result.substring(0,index+1);
    47         else {
    48             return result;
    49         }
    50     }
    51 
    52     public static void main(String[] args) 
    53     {        
    54         Num2Rmb nr = new Num2Rmb();
    55         System.out.println("只支持整数(0~百万)");
    56         //测试把一个四位的数字字符串变成汉字字符串
    57         System.out.println(nr.toHanStr("0"));
    58         System.out.println(nr.toHanStr("1"));
    59         System.out.println(nr.toHanStr("10"));
    60         System.out.println(nr.toHanStr("15"));
    61         System.out.println(nr.toHanStr("110"));
    62         System.out.println(nr.toHanStr("123"));
    63         System.out.println(nr.toHanStr("105"));
    64         System.out.println(nr.toHanStr("1000"));
    65         System.out.println(nr.toHanStr("1100"));
    66         System.out.println(nr.toHanStr("1110"));
    67         System.out.println(nr.toHanStr("1005"));
    68         System.out.println(nr.toHanStr("1105"));
    69         System.out.println(nr.toHanStr("1111"));
    70         System.out.println(nr.toHanStr("10000"));
    71         System.out.println(nr.toHanStr("10001"));
    72         System.out.println(nr.toHanStr("10011"));
    73         System.out.println(nr.toHanStr("10111"));
    74         System.out.println(nr.toHanStr("11111"));
    75         System.out.println(nr.toHanStr("11000"));
    76         System.out.println(nr.toHanStr("11100"));
    77         System.out.println(nr.toHanStr("11110"));
    78         System.out.println(nr.toHanStr("101110"));
    79         System.out.println(nr.toHanStr("1001110"));
    80         
    81     }
    82 }

    (2)实验截图

    3.动手动脑(大数计算)

    (1)源程序

      1 import java.util.Scanner;
      2 
      3 public class Dashu{
      4         public static int[]add(int []a,int []b){
      5             int digit=0;//位数
      6             int[]c=new int[a.length];
      7             for(int i=a.length-1;i>=0;i--)
      8             {
      9                 c[i]=a[i]+b[i]+digit;
     10                 if(c[i]<10)
     11                     digit=0;
     12                 else
     13                 {
     14                     c[i]=c[i]-10;
     15                     digit=1;
     16                 }
     17             }
     18             return c;
     19     }
     20         public static int []sub(int []a,int[]b,int w)
     21         {
     22             int digit=0;
     23             int[]c=new int[a.length];
     24             for(int i=a.length-1;i>=0;i--)
     25             {
     26                 if(w<=0)
     27                 {
     28                     c[i]=b[i]-a[i]-digit;
     29                     if(c[i]>=0)
     30                     {   digit=0;}
     31                     else
     32                     {
     33                         c[i]=c[i]+10;
     34                         digit=1;
     35                     }
     36                 }
     37                     else
     38                     {
     39                         c[i]=a[i]-b[i]-digit;
     40                         if(c[i]>=0)
     41                         {digit=0;}
     42                         else
     43                         {
     44                             c[i]=c[i]+10;
     45                             digit=1;
     46                         }
     47                  }
     48              }
     49                 return c;
     50             }
     51             public static void main(String[]args){
     52                 int a[]=new int[50];
     53                 int b[]=new int[50];
     54                 int m=0;
     55                 int n=0;
     56                 int s=0;
     57                 int t=0;int w=0;
     58                 Scanner in=new Scanner(System.in);
     59                 System.out.println("请输入第一个大数:");
     60                 String aa=in.next();
     61                 System.out.println("请输入第二个大数:");
     62                 String bb=in.next();
     63                 m=a.length-aa.length();
     64                 n=b.length-bb.length();
     65                 if(aa.length()>bb.length())
     66                 {
     67                     w=1;
     68                 }
     69                 else if (aa.length()<bb.length())
     70                 {
     71                     w=-1;
     72                 }
     73                 else
     74                     {w = aa.compareTo(bb);}
     75                 for (int i = 0; i < aa.length(); i++)
     76                 {
     77                     a[m++] = aa.charAt(i) - 48;
     78                 }
     79                 for (int j = 0; j < bb.length(); j++)
     80                 {
     81                     b[n++] = bb.charAt(j) - 48;
     82                 }
     83                     int[] c = Dashu.add(a, b);
     84                     for (int k = 0; k < c.length; k++)
     85                     {
     86                         if (c[k] > 0)
     87                         {
     88                         s = k;
     89                         break;
     90                         }
     91                     }
     92                     System.out.print("大数相加的结果为:");
     93                     for (int i = s; i < c.length; i++) {
     94                     System.out.print(c[i]);
     95                     }
     96                     System.out.println();
     97                     int[] d = Dashu.sub(a, b, w);
     98                     for (int k = 0; k < d.length; k++)
     99                     {
    100                         if (d[k] > 0)
    101                         {
    102                         t = k;
    103                         break;
    104                         }
    105                     }
    106                     System.out.print("大数相减的结果为:");
    107                     if (w < 0)
    108                     System.out.print("-");
    109                     for (int i = t; i < d.length; i++)
    110                     {
    111                         System.out.print(d[i]);
    112                     }
    113                     System.out.println();
    114                     System.out.println();
    115                     System.out.println();
    116                     System.out.println();
    117  
    118  
    119                     }
    120 }

    (2)实验截图

  • 相关阅读:
    loglikelihood ratio 相似度
    实例详解机器学习如何解决问题
    【特征工程】特征选择与特征学习
    基于贝叶斯的文本分类实战
    转 :scikit-learn的GBDT工具进行特征选取。
    QT静态库和动态库的导出
    C#.NET为List加入扩展方法:获取唯一值
    caffe卷积层代码阅读笔记
    UVa 11300
    zoj 3882 Help Bob(zoj 2015年7月月赛)
  • 原文地址:https://www.cnblogs.com/suifengye/p/6036354.html
Copyright © 2011-2022 走看看