• Java学习-练习


    1.计算阶乘

     1 import java.util.Scanner;
     2 public class test {
     3     public static void main(String[] args) {
     4         Scanner s=new Scanner(System.in);
     5         System.out.println("计算阶乘:");
     6         int res=s.nextInt();
     7         int i=res-1;
     8         while(i>0)
     9         {
    10             res=res*(i--);
    11         }
    12         System.out.println("结果是:"+res);
    13     }
    14 }

    2.寻找某两个数相除,其结果 离黄金分割点 0.618最近
    分母和分子不能同时为偶数
    分母和分子 取值范围在[1-20]

     1 public class test
     2 {
     3     public static void main(String[] args) {
     4         int i,j,x,y;
     5         double min=9999;
     6         double tmp=0;
     7         x=y=0;
     8         for(i=1;i<=20;i++)
     9         {
    10             for(j=1;j<=20;j++)
    11             {
    12                 if(i%2==0 && j%2==0)
    13                     continue;
    14                 tmp=(double)i/j-0.618;//这里的强制转换double是个坑,不转换就会得出错误的结果
    15                 if(tmp<0)
    16                 {
    17                     tmp=tmp*(-1.0);
    18                 }
    19                 if( tmp<min)//当发现有更小的差值时,更新min和x,y
    20                 {
    21                     x=i;
    22                     y=j;
    23                     min=tmp;
    24                 }
    25             }
    26         }
    27         System.out.println("这两个数是"+x+"/"+y+"="+(double)x/y);
    28     }
    29 }

    3.水仙花数定义:
    1. 一定是3位数
    2. 每一位的立方,加起来恰好是这个数本身,比如153=1*1*1+5*5*5+3*3*3
    寻找所有的水仙花数

     1         int i,j,k;
     2         for(int n=100;n<=999;n++)
     3         {
     4             k=n%10;//个位
     5             j=n/10%10;//十位
     6             i=n/100;//百位
     7             if(i*i*i+j*j*j+k*k*k==n)
     8             {
     9                 System.out.println(n);
    10             }
    11         }

     4.由小到大,由大到小排序。(冒泡排序)

     1 public class test
     2 {
     3      static void selectSort(int a[])
     4     {
     5         int i,j,min,tmp;
     6         for(i=0;i<a.length;i++)
     7         {
     8             min=i;
     9             for(j=i+1;j<a.length;j++)
    10             {
    11                 if(a[j]<a[min])
    12                     min=j;
    13             }
    14             tmp=a[i];
    15             a[i]=a[min];
    16             a[min]=tmp;
    17         }
    18     }
    19      static void bubbleSort1(int a[])//由小到大排序
    20      {
    21          int i,j,tmp;
    22          for(i=a.length-1;i>=1;i--)
    23          {
    24              for(j=0;j+1<=i;j++)
    25              {
    26                  if(a[j]>a[j+1])
    27                  {
    28                      tmp=a[j];
    29                      a[j]=a[j+1];
    30                      a[j+1]=tmp;
    31                  }
    32              }
    33          }
    34      }
    35      static void bubbleSort2(int a[])//由大到小排序
    36      {
    37          int i,j,tmp;
    38          for(i=0;i<a.length-1;i++)
    39          {
    40              for(j=a.length-1;j-1>=i;j--)
    41              {
    42                  if(a[j-1]<a[j])
    43                  {
    44                      tmp=a[j-1];
    45                      a[j-1]=a[j];
    46                      a[j]=tmp;
    47                  }
    48              }
    49          }
    50      }
    51      static void print(int a[])
    52     {
    53         for(int i=0;i<a.length;i++)
    54         {
    55             System.out.println(a[i]);
    56         }
    57     }
    58     public static void main(String[] args) {
    59         int a[]=new int[5];
    60         for(int i=0;i<5;i++)
    61         {
    62             a[i]=(int)(Math.random()*100);
    63         }
    64 //        selectSort(a);
    65         //先由小到大排序,再由大到小排序
    66         bubbleSort1(a);
    67         print(a);
    68         bubbleSort2(a);
    69         System.out.println("........我是分割线.......");
    70         print(a);
    71 
    72     }
    73 }

     5.生成随机的5*5二维数组,找出最大值并打印行列坐标

     1 static void print2(int a[][])
     2 {
     3     int i,j;
     4     for(i=0;i<a.length;i++)//此乃最大行数
     5     {
     6         for(j=0;j<a[0].length;j++)//此乃最大列数
     7             if(j==a[0].length-1){//排版好看
     8                 System.out.print(a[i][j]);
     9                 System.out.print("
    ");
    10             }
    11             else
    12             {
    13                 System.out.print(a[i][j]+"	");
    14             }
    15     }
    16 }
    17     public static void main(String[] args) {
    18         int a[][]=new int[5][5];
    19         int i,j;
    20         for(i=0;i<5;i++)
    21         {
    22             for(j=0;j<5;j++)
    23             {
    24                 a[i][j]=(int)(Math.random()*100);
    25             }
    26         }
    27         int max=0;
    28         int x,y;
    29         x=y=0;
    30         for(i=0;i<5;i++)
    31         {
    32             for(j=0;j<5;j++)
    33             {
    34                 if(a[i][j]>max)
    35                 {
    36                     max=a[i][j];
    37                     x=i;
    38                     y=j;
    39                 }
    40             }
    41         }
    42         print2(a);
    43         System.out.println("最大值是:"+max);
    44         System.out.println("坐标是:"+x+","+y);
    45     }
    46 }

     6.首先定义一个5X8的二维数组,然后使用随机数填充满。
    借助Arrays的方法对二维数组进行排序。
    参考思路:
    先把二维数组复制到一个一维数组
    然后使用sort进行排序
    最后再复制回到二维数组

     1 static void print2(int a[][])//打印二维数组
     2 {
     3     int i,j;
     4     for(i=0;i<a.length;i++)
     5     {
     6         for(j=0;j<a[0].length;j++)
     7             if(j==a[0].length-1){
     8                 System.out.print(a[i][j]);
     9                 System.out.print("
    ");
    10             }
    11             else
    12             {
    13                 System.out.print(a[i][j]+"	");
    14             }
    15     }
    16 }
    17     public static void main(String[] args) {
    18         int a[][]=new int[5][8];
    19         for(int i=0;i<a.length;i++)
    20         {
    21             for(int j=0;j<a[0].length;j++)
    22             {
    23                 a[i][j]=(int)(Math.random()*100);
    24             }
    25         }
    26         print2(a);
    27         int b[]=new int[40];
    28         int k=0;
    29         while(k<b.length)
    30         {
    31             for(int i=0;i<a.length;i++)
    32             {
    33                 System.arraycopy(a[i], 0, b, k, a[0].length);
    34                 k=k+a[0].length;
    35             }
    36         }
    37         Arrays.sort(b);
    38         System.out.println("............我是分割线.............");
    39         k=0;
    40         while(k<b.length)
    41         {
    42             for(int i=0;i<a.length;i++)
    43             {
    44 //                for(int j=0;j<a[0].length;j++)
    45 //                {
    46 //                    a[i][j]=b[k++];
    47 //                }
    48                 System.arraycopy(b, k, a[i], 0, a[0].length);
    49                 k=k+a[0].length;
    50             }
    51         }
    52         print2(a);
    53     }
    54 }

     

  • 相关阅读:
    Euraka适合初学者的简单小demo
    springboot中常用的依赖
    SpringBoot的入门程序
    spring-data-solr查询
    SpringBoot整合Redis
    SpringBoot整合MyBatis
    使用swagger2生成文档
    SpringBoot整合Spring Data JPA
    SpringBoot构建RESTful API
    SpringBoot属性配置
  • 原文地址:https://www.cnblogs.com/gilgamesh-hjb/p/12108742.html
Copyright © 2020-2023  润新知