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. C语言中.h和.c文件解析(转载)

    转载:http://www.cnblogs.com/laojie4321/archive/2012/03/30/2425015.html   简单的说其实要理解C文件与头文件(即.h)有什么不同之处, ...

  2. 为何只能在其关联的线程内启动timer?(Qt会检查一致性,否则就不执行)

    为何只能在其关联的线程内启动timer? 在QTimer源码分析(以Windows下实现为例) 一文中,我们谈到: QTimer的是通过QObject的timerEvent()实现的,开启和关闭定时器 ...

  3. 逻辑回归模型(Logistic Regression)及Python实现

    逻辑回归模型(Logistic Regression)及Python实现 http://www.cnblogs.com/sumai 1.模型 在分类问题中,比如判断邮件是否为垃圾邮件,判断肿瘤是否为阳 ...

  4. Delphi 与 VC 共享接口和对象

    我经常会用 Delphi 写一些工具和应用,为了扩展方便,大部分都会做成插件形式. 迫于某些原因,我的插件不得不用其他开发工具来完成,比如 VC. 于是有个大问题需要解决:如何让 D 和 VC 互相通 ...

  5. CentOS7中firewalld的安装与使用详解

    一.软件环境 [root@Geeklp201 ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) 二.安装firewall ...

  6. VS2013设置release版本可调试

    http://blog.csdn.net/caoshangpa/article/details/76575640

  7. 快速开发平台 WebBuilder 8.6发布

    WebBuilder下载:http://www.geejing.com/download.html WebBuilder快速开发平台是基于Web面向服务的应用系统开发平台,可以方便快捷的搭建各类型企业 ...

  8. TopFreeTheme精选免费模板【20130626】

    有一段时间没有发布的模板了,相信很多喜欢新模板的朋友有点焦急了!还好,今天我今天整理了13个最新的模板,主要是WordPress的,另外3个是关于Joomla的模板,他们分别是游戏主题.俱乐部主题以及 ...

  9. vue+TS(CLI3)

    1.用CLI3创建项目 查看当前CLI的版本,如果没有安装CLI3的  使用npm install --global vue-cli来安装CLI 安装好CLI 可以创建项目了 使用vue create ...

  10. 30441数据定义语言DDL

    数据定义:指对数据库对象的定义.删除和修改操作. 数据库对象主要包括数据表.视图.索引等. 数据定义功能通过CREATE.ALTER.DROP语句来完成. 按照操作对象分类来介绍数据定义的SQL语法. ...