import java.io.FileNotFoundException;
import java.io.PrintStream;
import java.math.BigDecimal;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
//        new Case019_100().test();

//        new Case027().test();
//        new Case034().test();
       new Case037().test();

//        new Case036().test();
//        new Case042().test();
    }
}

class Case019_100 {
    public void test() {
//        dispose019();
//        dispose020();
//        dispose021();
//        dispose022();
//        dispose023();
//        dispose026();
//        dispose034();
    }

    private void dispose019() {
        System.out.println("Out");
        System.err.println("Err");
    }
    private void dispose020() {
        System.out.println("Your Input:");
        String line = new Scanner(System.in).nextLine();
        System.out.println("YOur Input:"+line);
    }
    private void dispose021() {
        try {
//            PrintStream out = new PrintStream(new FileOutputStream("./src/stdout"));
            PrintStream out = new PrintStream("./src/stdout"); //这个地方可以优化
            System.setOut(out);
            System.out.println("nihao");
            System.out.println("happy to see you.");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
    private void dispose022() {
        System.out.println("Input A Line:");
        String line = new Scanner(System.in).nextLine();

        //加密
        char[] arr = line.toCharArray();
        for (int i = 0; i < arr.length; i++) {
            arr[i]=(char)(arr[i]^2000);
        }
        System.out.println("Encrypt Result: "+new String(arr));

        //解密
        for (int i = 0; i < arr.length; i++) {
            arr[i]=(char)(arr[i]^2000);
        }
        System.out.println("Decode Result: "+new String(arr));
    }
    private void dispose023() {
        System.out.println("Your Input:");
        Long num = new Scanner(System.in).nextLong();
        String result = num%2==0?"偶数":"奇数";
        System.out.println("Result: "+result);
    }
    private void dispose026() {
        //
        System.out.println("2*16:" + (1<<5));
    }
    private void dispose034() {
        int layer = 10;
        int[][] arrs = new int[layer][layer];

        for (int i = 0; i < layer; i++) {
            for (int j = 0; j < layer; j++) {
                arrs[i][j]=-1;
            }
        }

        for(int i=0;i<layer;i++){

        }
    }
    private void dispose037() {
        int size = 10;
        if (size % 2 == 0) {
            size++;
        }

        int length = size/2+1;
        boolean[][] arrs = new boolean[length][length];

        for (int i = 0; i < length; i++) {
            for (int j = 0; j < length; j++) {
                if(i==j)
                    arrs[i][j]=true;
                else
                    arrs[i][j]=false;
            }
        }

    }
}

/*
    需求:利用异或运算,完成不借助第三个变量实现两个数字的交换
    核心公式:
        A = A ^ B;
        B = B ^ A;
        A = A ^ B;
    解析:
        A = a; B = b;
        A = a^b;
        B = b^(a^b)=a;
        A = (a^b)^(b^(a^b))=b;
 */
class Case027 {
    public void test() {

        dispose(10,20);
    }

    private void dispose(int a, int b){
        System.out.println("a: "+a+" b: "+b);

        a=a^b;
        b=a^b;
        a=a^b;

        System.out.println("a: "+a+" b: "+b);
    }
}

/*
    需求:杨辉三角
 */
class Case034 {
    public void test() {
        dispose(10);
    }

    private void dispose(int layer){

        int[][] arrs = new int[layer][layer+2];

        //初始化二维数组
        for (int i = 0; i < layer; i++) {
            for (int j = 0; j < layer + 2; j++) {
                arrs[i][j]=-1;
            }
        }

        //
        for (int i = 0; i < layer; i++) {
            if (i == 0) {
                arrs[i][1]=1;
                arrs[i][0]=0;
                arrs[i][2]=0;
                continue;
            }

            int j;
            for (j = 1; j <= i + 1; j++) {
                arrs[i][j]=arrs[i-1][j]+arrs[i-1][j-1];
            }
            arrs[i][0]=0;
            arrs[i][j]=0;
        }

        for(int m = 0;m<layer;m++){
            for (int n = 1; n <= m+1; n++) {
                System.out.printf("%4d",arrs[m][n]);
            }
            System.out.println();
        }

    }
}

/*
    需求:计算1+1/2!+1/3!+...+1/20!
 */
class Case036 {
    public void test() {
        dispose(20);
        dispose2(20);
    }

    private void dispose(int n) {
        int[] arrs = new int[n+1];
        for (int i = 1; i <= n; i++) {
            if (i == 1) {
                arrs[i]=1;
                continue;
            }

            arrs[i]=arrs[i-1]*i;
        }

        double result = 0.0;
        for (int i = 1; i <= n; i++) {
            result += (double)1/(double)arrs[i];
        }

        System.out.println("Result:"+result);
    }

    //这种写法更精炼
    private void dispose2(int n) {
        BigDecimal sum = new BigDecimal(0.0);
        BigDecimal factorial = new BigDecimal(1.0);

        int i = 1;
        while (i <= n) {
            factorial = factorial.multiply(new BigDecimal(1.0/i));
            sum=sum.add(factorial);
            i++;
        }

        System.out.println("dispose2: "+sum);
    }
}

/*
    需求:空心菱形
 */
class Case037 {
    public void test() {
        dispose(10);
    }

    private void dispose(int size) {
        if (size % 2 == 0) {
            size++;
        }

        for (int i = 1; i <= size; i++) {
            //特殊区域
            if (i == 1 || i == size) {
                for (int j = 1; j <= size / 2; j++) {
                    System.out.print(" ");
                }
                System.out.println("*");
                continue;
            }

            if (i == size / 2 + 1) {
                System.out.print("*");
                for (int j = 2; j < size; j++) {
                    System.out.print(" ");
                }
                System.out.println("*");
                continue;
            }
            //上半部分
            if(i<size/2+1){

                int area = size/2-1;
                int layer = i-1;
                int lx = area-layer+1;
                int rx = layer;

                printEdge(area,lx); //左边
                printEdge(area,rx);//右边
                System.out.println();
            }
            //下半部分
            if(i>size/2+1){

                int area = size/2-1;
                int layer = i-size/2-1;
                int lx = area-layer+1;
                int rx = layer;

                printEdge(area,rx);//左边
                printEdge(area,lx); //右边
                System.out.println();

            }
        }
    }

    private void printEdge(int area, int x) {
        System.out.print(" ");
        for(int i=1;i<=area;i++){
            if (i == x) {
                System.out.print("*");
            } else {
                System.out.print(" ");
            }
        }
    }
}
/*
    需求:本实例接受用户在文本框中输入的单行数据,其中数据都是整型数字,
    以不同数量的空格分割数字。将这个单行数据分解成一维数组,并从数组中提
    取最小值。
 */
class Case042 {

    public void test() {
        String[] inputs = new String[]{
                "12 23 34 21 23  12  323  2  2 3 ",
                "12 23 34 23 ji 3 21 3  2 32 12 3 2 123"
        };

        for (int i = 0; i < inputs.length; i++) {
            dispose(inputs[i]);
        }
    }

    private void dispose(String str) {
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (!Character.isDigit(c) && !Character.isSpaceChar(c)) {
                System.out.println("该输入有不合法字符");
                return;
            }
        }

        System.out.println("最小的值:"+findMin(split(str)));
    }

    private int[] split(String str) {

        String[] ints = str.split(" +");
        int[] result = new int[ints.length];

        for (int i = 0; i < result.length; i++) {
            result[i]=Integer.valueOf(ints[i]);
        }

        return  result;
    }

    private int findMin(int[] nums) {
        int min = nums[0];

        for (int i = 0; i < nums.length; i++) {
            if (nums[i] < min) {
                min = nums[i];
            }
        }

        return min;
    }

}

Java开发实例大全:3月14日练习的更多相关文章

  1. 关于苹果开发证书失效的解决方式(2016年2月14日Failed to locate or generate matching signing assets)

    前言: 从2月14日開始,上传程序的同学可能会遇到提示上传失败的提示. 而且打开自己的钥匙串,发现所有的证书所有都显示此证书签发者无效. Failed to locate or generate ma ...

  2. 关于16年2月14日以后上传AppStore出现:Missing iOS Distribution signing identity for...的问题

    2016年2月14日以后打包上传AppStore会发现出现如下的问题: 导致问题的原因是:下边这个证书过期了 以下是苹果官方给出的回应: Thanks for bringing this to the ...

  3. eoe移动开发者大会—移动开发者的极客盛宴 2013年9月14日期待您的加入!!

    2013 eoe移动开发者大会北京站即将盛大开启!      大会介绍 由国内最大的移动开发者社区eoe主办,在行业盟友的倾力支持下,集合了来自微软.Google.亚马逊.ARM等跨国公司业务负责人的 ...

  4. 湖人VS爵士!!科比4月14日最后一战,本赛季最高得分!狂得60分!!完美大逆转!!!

    莫愁前路无知己,天下谁人不识君.科比,愿你如迈克尔·乔丹,仍然活跃在篮球界.退役不是结束,而是另一段人生的开始. 北京时间2016年4月14日,湖人101-96击败爵士,科比-布莱恩特告别战,20年职 ...

  5. 12月14日《奥威Power-BI销售计划填报》腾讯课堂开课啦

           2016年的最后一个月也过半了,新的一年就要到来,你是否做好了启程的准备?新的一年,有计划,有目标,有方向,才不至于迷茫.规划你的2017,新的一年,遇见更好的自己!        所以 ...

  6. 2016年12月14日 星期三 --出埃及记 Exodus 21:9

    2016年12月14日 星期三 --出埃及记 Exodus 21:9 If he selects her for his son, he must grant her the rights of a ...

  7. 2016年11月14日 星期一 --出埃及记 Exodus 20:5

    2016年11月14日 星期一 --出埃及记 Exodus 20:5 You shall not bow down to them or worship them; for I, the LORD y ...

  8. 2016年10月14日 星期五 --出埃及记 Exodus 18:25

    2016年10月14日 星期五 --出埃及记 Exodus 18:25 He chose capable men from all Israel and made them leaders of th ...

  9. Java Calendar获取年、月、日、时间

    Java Calendar获取年.月.日.时间 Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00" ...

随机推荐

  1. 微信小程序把玩(二十一)switch组件

    原文:微信小程序把玩(二十一)switch组件 switch开关组件使用主要属性: wxml <!--switch类型开关--> <view>switch类型开关</vi ...

  2. sqlite查询问题,由字母大小写敏感引起

    目前做的项目之前是用mysql,这是个错误的选择,因为本身并不是服务器-客户端模式的项目,而是一个CS架构项目,mysql这种需要较繁复配置的数据库并不合适.需要的应该是sqlite这类,内嵌的数据库 ...

  3. C#6.0一些特性

    1.自动属性初始化的改进 声明属性时可以直接进行初始化 public int id {get;set;}=10; 自动属性是省去了get和set内部的过程,而直接用set;get;这样的语句代替, 把 ...

  4. delphi Stomp客户端连接 RabbitMQ(1)

    最近公司想上个消息推送系统,网上搜了很多,因公司主要产品是Delphi,我选择了开源的RabbitMQ,Erlang语言开发,天生并行. 代码下载地址:delphistomp下载地址 windows上 ...

  5. How To Compile Qt with Visual Studio

    How To Compile Qt with Visual Studio FEBRUARY 1, 2011 This post is a step-by-step guide on how to co ...

  6. How Qt Signals and Slots Work(感觉是通过Meta根据名字来调用)

    Qt is well known for its signals and slots mechanism. But how does it work? In this blog post, we wi ...

  7. Dependency Injection 筆記 (1)

    <.NET 依賴注入>連載 (1) 本文从一个基本的问题开始,点出软件需求变动的常态,以说明为什么我们需要学习「依赖注入」(dependency injection:简称 DI)来改善设计 ...

  8. python之mock模块基本使用

    mock简介 mock原来是python的第三方库 python3以后mock模块已经整合到了unittest测试框架中,不用再单独安装 Mock这个词在英语中有模拟的这个意思,因此我们可以猜测出这个 ...

  9. 共识协议——RAFT&PBFT

    区块链是一个没有中央权威的分布式对等系统.虽然权力下放可以防止各方的腐败行为,但是它必需要有一个可靠的共识协议来作出决策,让分散在世界各地的节点可以形成一致的意见.常见的共识算法有比特币采用的POW, ...

  10. 基于Common.Logging + Log4Net实现的日志管理

    前言 Common.Logging 是Commons-Logging(apache最早提供的日志门面接口,提供了简单的日志实现以及日志解耦功能) 项目的.net版本.其目的是为 "所有的.n ...