Java语言基础(2)

来源:互联网 发布:技术推算法的步骤 编辑:程序博客网 时间:2024/06/10 20:03

1、判断闰年

package stage1;import java.util.Scanner;public class LeapyYear {    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        System.out.print("请输入年份:");        int year = scanner.nextInt();        scanner.close();        /*四年一闰,百年不闰,四百年再闰*/        boolean isLeapYear = (year % 4 == 0 && year % 100 != 0)                 || year % 400 == 0;        String msg = isLeapYear ? year + "是闰年" : year + "不是闰年";        System.out.println(msg);    }}

2、比较for循环和递归的效率

package stage1;public class Recursive {    public static void main(String[] args) {        int n = 50;        //获取当前时间          long time = System.currentTimeMillis();        System.out.println("fibByFor(" + n + ")=" + fibByFor(n));        System.out.println("使用for循环计算,用时:"                 + (System.currentTimeMillis() - time) + "毫秒");        time = System.currentTimeMillis();        System.out.println("fibByRecursive(" + n + ")=" + fibByRecursive(n));        System.out.println("使用递归计算,用时:"                 + (System.currentTimeMillis() - time) + "毫秒");        }        //循环方式计算费氏数列         public static long fibByFor(int n) {            if (n == 1 || n == 2)                return 1;            long f1 = 1;            long f2 = 1;            for (int i = 3; i <= n; i++) {                f2 = f1 + f2;                f1 = f2 - f1;            }            return f2;        }        //递归方式计算        public static long fibByRecursive(int n) {            if (n == 1 || n == 2)                return 1;            return fibByRecursive(n - 1) + fibByRecursive(n - 2);        }}

3、冒泡排序

package stage1;import java.util.Random;import java.util.Arrays;public class BubbleSort {    public static void main(String[] args) {        //创建数组        int[] arr = new int[10];        Random ran = new Random();        for (int i = 0;i < arr.length;i++) {            arr[i] = ran.nextInt(100);        }        System.out.println(Arrays.toString(arr));        //冒泡排序        System.out.println("---------------冒泡排序  开始---------------");        for (int i = 0;i < arr.length - 1;i++) {            for (int j = 0;j < arr.length - 1 - i;j++) {                if (arr[j] > arr[j + 1]) {                    int t = arr[j];                    arr[j] = arr[j + 1];                    arr[j + 1] = t;                }            }            System.out.println(Arrays.toString(arr));        }        System.out.println("----------------冒泡排序  结束---------------");        System.out.println(Arrays.toString(arr));    }}

4、插入排序

package stage1;import java.util.Random;import java.util.Arrays;public class InsertSort {    public static void main(String[] args) {        int[] arr = new int[12];        Random ran = new Random();        for (int i = 0; i < arr.length; i++) {            arr[i] = ran.nextInt(100);        }        //插入排序        System.out.println(Arrays.toString(arr));        System.out.println("-------------插入排序  开始-------------");        for (int i = 1; i < arr.length; i++) {            int k = arr[i];//取出待插入元素            //找到插入位置            int j;            for (j = i - 1; j >= 0 && k < arr[j]; j--) {                arr[j + 1] = arr[j];//移动元素            }            //插入元素            arr[j + 1] = k;            System.out.println(Arrays.toString(arr));        }        System.out.println("------------插入排序  结束--------------");        System.out.println(Arrays.toString(arr));    }}

5、猜字符小游戏

package stage1;import java.util.Random;import java.util.Scanner;//猜字符public class GuessingGame {    public static void main(String[] args) {        Scanner scan = new Scanner(System.in);        int count = 0;//记录猜错的次数        char[] chs = generate();//生成5个字符        System.out.println(chs);//println可以输出字符数组,但不能输出int数组        /*for (int i = 0;i < chs.length;i++) {            System.out.print(chs[i]);        }        System.out.println();*/        while (true) {            System.out.println("猜吧!");            String str = scan.next().toUpperCase();//接收用户的串            if (str.equals("EXIT")) {                System.out.println("下次再来");                break;            }            char[] input = str.toCharArray();            int[] result = check(chs,input);            if (result[1] == chs.length) {                int score = chs.length * 100 - count * 10;                System.out.println("恭喜你,猜对了,得分"+score);                break;            }else {                count++;                System.out.println("字符对了"+result[0]+"个,位置对了"+result[1]+"个");            }        }        scan.close();    }    //随机生成5个字符数组    public static char[] generate() {        char[] chs = new char[5];        Random rand = new Random();        char[] letters = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};        boolean[] flags = new boolean[letters.length];        for (int i = 0;i < chs.length;i++) {            int index;            do {                index = rand.nextInt(letters.length);                /*index = (int)(Math.random() * letters.length)*/            }while(flags[index]);            chs[i] = letters[index];            flags[index] = true;        }        return chs;    }    //比较    public static int[] check(char[] chs,char[] input) {        int[] result = new int[2];        for (int i = 0;i < chs.length;i++) {            for (int j = 0;j < input.length;j++) {                if (chs[i] == input[j]) {                    result[0]++;                    if (i == j) {                        result[1]++;                    }                    break;                }            }        }        return result;    }}
原创粉丝点击