Java 基础题练习

扎实基本功

文章目录

  • 黄金分割点
  • 水仙花数
  • 小学算术题
  • 数组反转
  • 排序

黄金分割点

寻找某两个数相除,其结果 离黄金分割点 0.618最近

分母和分子不能同时为偶数
分母和分子 取值范围在[1-20]

        float i, j, min = 1f, i1 = 1f, j1 = 1f;
        for (i = 1f; i < 20; i++){
            for (j = 1f; j < 20; j++){
                if(i%2 == 0 && j%2 ==0)
                    continue;

                float temp = (i/j - 0.618f) > 0? (i/j - 0.618f):(0.618f - i/j);
                if(temp < min){
                    min = temp;
                    i1 = i;
                    j1 = j;
                    System.out.println(min);
                }
            }
        }
        System.out.println(i1 + "/" + j1 + "=" + i1/j1);

0.38200003
0.11799997
0.048666716
0.017999947
0.007000029
0.0026153326
8.0/13.0=0.61538464

水仙花数

水仙花数定义:

  1. 一定是3位数
  2. 每一位的立方,加起来恰好是这个数本身,比如153=111+555+333

寻找所有的水仙花数

        int i;

        for (i = 100; i <= 999; i++){
            int t1 = i / 100;
            int t2 = (i - t1*100) / 10;
            int t3 = i - t1*100 - t2*10;

            if(i == (t1*t1*t1 + t2*t2*t2 + t3*t3*t3)){
                System.out.println(i);
            }

        }

153
370
371
407

小学算术题

Java 基础题练习_第1张图片

 		int a, b , c, d;
        for (a = 0; a <= 14; a++)
            for (b = 0; b <= 14; b++)
                for (c = 0; c <= 14; c++)
                    for (d = 0; d <= 14; d++){
                        if(a+b == 8 && a+c == 14 && c-d == 6 && b+d ==10){
                            System.out.println(a + " " + b);
                            System.out.println(c + " " + d);
                            System.out.println("-------------------");
                        }
                    }

3 5
11 5
-------------------

数组反转

首先创建一个长度是5的数组,并填充随机数。
使用for循环或者while循环,对这个数组实现反转效果

		int[] a = new int[5];
        for (int i = 0; i < a.length; i++)
        {
            a[i] = (int) (Math.random() * 100);
        }
        for (int i = 0; i < a.length; i++) {
            System.out.println(a[i]);
        }

        for (int i = 0; i < a.length/2; i++)
        {
            int temp = a[i];
            a[i] = a[a.length -1 - i];
            a[a.length - 1 - i] = temp;
        }
        for (int i = 0; i < a.length; i++) {
            System.out.println(a[i]);
        }
62
38
81
34
94
94
34
81
38
62

排序

首先创建一个长度是5的数组,并填充随机数。
首先用选择法正排序,然后再对其使用冒泡法倒排序
注 所谓的正排序就是从小到大排序,倒排序就是从大到小排序

 		int[] a = new int[5];
        for (int i = 0; i < a.length; i++)
        {
            a[i] = (int) (Math.random() * 100);
        }

        //选择排序
        for (int i = 0; i < 5; i++) {
            for (int j = i+1; j < 5; j++) {
                if(a[i] > a[j])
                {
                    int temp = a[i];
                    a[i] = a[j];
                    a[j] = temp;
                }
            }
        }

        for (int i = 0; i < a.length; i++) {
            System.out.println(a[i]);
        }

        //冒泡
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 4 - i; j++) {
                if(a[j+1] > a[j]){
                    int temp = a[j+1];
                    a[j+1] = a[j];
                    a[j] = temp;
                }
            }
        }

        for (int i = 0; i < a.length; i++) {
            System.out.println(a[i]);
        }
       
18
24
34
46
58

58
46
34
24
18

你可能感兴趣的:(Java)