zoukankan      html  css  js  c++  java
  • 数组

    一、QiPan.java利用二维数组和循环语句绘制五子棋盘。

           定义二维数组作为棋盘,利用数组大小设置棋盘大小,电脑随机生成两个随机数作为下子的坐标,玩家输入两个数作为坐标,数字不能超出棋盘的范围,循环直到一方胜利。

    二、整数转换为汉字。

         

    package demo;
    import javax.swing.*;
    import java.util.Scanner;
    public class Changeint {

    /**
    * @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Changeint t2r = new Changeint();
    String s = t2r.cleanZero(t2r.numFormat((t2r.getNum())));
    // 如果转换过后是一个空串,则不输出屏幕
    if(!"".equals(s)) {
    System.out.println("转换成中文后为:" + s);
    }
    }
    private String getNum() {
    String s = null;
    System.out.println("请输入一个整数(非负数):");
    // 从命令行输入这个数
    Scanner scan = new Scanner(System.in);
    s = scan.next();
    scan.close();
    return s;
    }

    private String numFormat( String s) {
    int sLength = s.length();
    // 货币大写形式
    String bigLetter[] = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
    // 货币单位
    String unit[] = {" ", "十", "百", "千", "万", "十", "百", "千", "亿", "十", "百", "千", "万"};

    // 用来存放转换后的新字符串
    String newS = "";
    // 逐位替换为中文大写形式
    for(int i = 0; i < sLength; i ++) {
    newS = newS + bigLetter[s.charAt(i) - 48] + unit[sLength - i - 1];
    }
    return newS;
    }

    private String cleanZero(String s) {
    // 如果传入的是空串则继续返回空串
    if("".equals(s)) {
    return "";
    }
    // 如果用户开始输入了很多 0 去掉字符串前面多余的'零',使其看上去更符合习惯
    while(s.charAt(0) == '零') {
    // 将字符串中的 "零" 和它对应的单位去掉
    s = s.substring(2);
    // 如果用户当初输入的时候只输入了 0,则只返回一个 "零"
    if(s.length() == 0) {
    return "零";
    }
    }
    // 字符串中存在多个'零'在一起的时候只读出一个'零',并省略多余的单位
    String regex1[] = {"零千", "零百", "零十"};
    String regex2[] = {"零亿", "零万"};
    String regex3[] = {"亿", "万"};
    // 第一轮转换把 "零仟", 零佰","零拾"等字符串替换成一个"零"
    for(int i = 0; i < 3; i ++) {
    s = s.replaceAll(regex1[i], "零");
    }
    // 第二轮转换考虑 "零亿","零万","零元"等情况
    // "亿","万","元"这些单位有些情况是不能省的,需要保留下来
    for(int i = 0; i < 2; i ++) {
    // 当第一轮转换过后有可能有很多个零叠在一起
    // 要把很多个重复的零变成一个零
    s = s.replaceAll("零零零", "零");
    s = s.replaceAll("零零", "零");
    s = s.replaceAll(regex2[i], regex3[i]);
    }

    // 当"万"到"亿"之间全部是"零"的时候,忽略"亿万"单位,只保留一个"亿"
    s = s.replaceAll("亿万", "亿");
    return s;
    }
    }

    结果截图

    三、大数计算

    import java.util.Scanner;
    public class Bignum {

    /**
    * @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String n1,n2;
    Scanner in=new Scanner(System.in);
    System.out.println("请输入第一个大数:");
    n1=in.next();
    System.out.println("请输入第二个大数:");
    n2=in.next();
    System.out.println(add(n1,n2));
    System.out.println(sub(n1,n2));
    in.close();
    }

    private static String add(String a, String b)
    {
    System.out.print("加法结果:");
    char[] aa = new StringBuffer(a).reverse().toString().toCharArray();
    char[] bb = new StringBuffer(b).reverse().toString().toCharArray();
    int aLen = aa.length;
    int bLen = bb.length;

    int len = aLen > bLen ? aLen : bLen;

    int[] result = new int[len + 1];
    for (int i = 0; i < len + 1; ++i) {
    int aint = i < aLen ? aa[i] - '0' : 0;
    int bint = i < bLen ? bb[i] - '0' : 0;
    result[i] = aint + bint;
    }

    for(int i=0;i<result.length-1;++i){
    if(result[i]>=10){
    result[i+1] += result[i]/10;
    result[i] %= 10;
    }
    }

    boolean flag = true;
    StringBuffer sb = new StringBuffer(len);
    for(int i=len;i>=0;--i){
    if(result[i]==0&&flag){
    continue;
    }
    else{
    flag=false;
    }
    sb.append(result[i]);
    }
    return sb.toString();
    }
    public static String sub(String f, String s) {
    System.out.print("减法结果:");
    // 将字符串翻转并转换成字符数组
    char[] a = new StringBuffer(f).reverse().toString().toCharArray();
    char[] b = new StringBuffer(s).reverse().toString().toCharArray();
    int lenA = a.length;
    int lenB = b.length;
    // 找到最大长度
    int len = lenA > lenB ? lenA : lenB;
    int[] result = new int[len];
    // 表示结果的正负
    char sign = '+';
    // 判断最终结果的正负
    if (lenA < lenB) {
    sign = '-';
    }
    else if (lenA == lenB) {
    int i = lenA - 1;
    while (i > 0 && a[i] == b[i]) {
    i--;
    }
    if (a[i] < b[i]) {
    sign = '-';
    }
    }
    // 计算结果集,如果最终结果为正,那么就a-b否则的话就b-a
    for (int i = 0; i < len; i++) {
    int aint = i < lenA ? (a[i] - '0') : 0;
    int bint = i < lenB ? (b[i] - '0') : 0;
    if (sign == '+') {
    result[i] = aint - bint;
    }
    else {
    result[i] = bint - aint;
    }
    }
    // 如果结果集合中的某一位小于零,那么就向前一位借一,然后将本位加上10。其实就相当于借位做减法
    for (int i = 0; i < result.length - 1; i++) {
    if (result[i] < 0) {
    result[i + 1] -= 1;
    result[i] += 10;
    }
    }

    StringBuffer sb = new StringBuffer();
    // 如果最终结果为负值,就将负号放在最前面,正号则不需要
    if (sign == '-') {
    sb.append('-');
    }
    // 判断是否有前置0
    boolean flag = true;
    for (int i = len - 1; i >= 0; i--) {
    if (result[i] == 0 && flag) {
    continue;
    }
    else {
    flag = false;
    }
    sb.append(result[i]);
    }
    // 如果最终结果集合中没有值,就说明是两值相等,最终返回0
    if (sb.toString().equals("")) {
    sb.append("0");
    }
    // 返回值
    System.out.println(sb.toString());
    return "";

    }
    }

    结果截图

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

       BigInteger:支持任意精度的整数,可以精确地表示任意大小的整数值,同时在运算过程中不会丢失任何信息。所有操作中,都以二进制补码形式表示 BigInteger(如 Java 的基本整数类型)。BigInteger 提供所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、位操作以及一些其他操作。

    四 、随机数

     (1)设计思路

      先定义一个长度为10的数组,随机生成数字,循环给数组元素赋值,在计算数组元素的和最后输出。

    (2)程序流程图

                    

    (3)源代码

    import javax.swing.JOptionPane;
    public class Number {

    /**
    * @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    int[] arr = new int[10];
    int num=0;
    String output=" ";
    for(int i=0;i<10;i++){
    arr[i] = (int)(Math.random()*10);
    }
    output+="十个元素为:"+" ";
    for(int i=0;i<10;i++)
    {
    output+=arr[i]+" ";
    num=num+arr[i];
    }
    output+=" ";
    output+="十个元素相加结果为:"+" ";
    output+=num;
    JOptionPane.showMessageDialog( null,output, "数组",JOptionPane.PLAIN_MESSAGE);
    }
    }

    (4)截图

         

  • 相关阅读:
    《MySQL是怎样运行的:从根儿上理解MySQL》笔记4
    《MySQL是怎样运行的:从根儿上理解MySQL》笔记3
    推荐一个对比jar包依赖的工具
    《MySQL是怎样运行的:从根儿上理解MySQL》笔记2
    《MySQL是怎样运行的:从根儿上理解MySQL》笔记1
    查询异步更新状态的一种思路
    springAop:Aop(Xml)配置,Aop注解配置,spring_Aop综合案例,Aop底层原理分析
    java知识点总结
    Maven基础&&Spring框架阶段常用工具类整理
    Idea快捷键整理
  • 原文地址:https://www.cnblogs.com/zhouzh/p/6036177.html
Copyright © 2011-2022 走看看