计算指定日期是这一年的第几天

  1. /*
  2. 计算给定日期是这一年的第几天
  3. */
  4. import java.util.Scanner;
  5. public class DayCal{
  6. public static void main(String args[]){
  7. int year;
  8. int month;
  9. int day;
  10. boolean isLeap = false;
  11. int sumDays = 0;
  12. Scanner scan = new Scanner(System.in);
  13. System.out.println("请输入年份:");
  14. year = scan.nextInt();
  15. System.out.println("请输入月份:");
  16. month = scan.nextInt();
  17. System.out.println("请输入日:");
  18. day = scan.nextInt();
  19. //判断是不是闰年
  20. if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0))
  21. isLeap = true;
  22. //计算天数
  23. switch(month){
  24. case 12:
  25. sumDays += 30;
  26. case 11:
  27. sumDays += 31;
  28. case 10:
  29. sumDays += 30;
  30. case 9:
  31. sumDays += 31;
  32. case 8:
  33. sumDays += 31;
  34. case 7:
  35. sumDays += 30;
  36. case 6:
  37. sumDays += 31;
  38. case 5:
  39. sumDays += 30;
  40. case 4:
  41. sumDays += 31;
  42. case 3:
  43. if(isLeap)
  44. sumDays += 29;
  45. else
  46. sumDays += 28;
  47. case 2:
  48. sumDays += 31;
  49. case 1:
  50. sumDays += day;
  51. }
  52. System.out.printf("%d年%d月%d日是这一年的第%d天\n", year, month, day, sumDays);
  53. }
  54. }

image.png

倒着写月份,妙啊!!!!

统计100000以内质数的个数

  1. /*
  2. 统计100000以内质数的个数
  3. 附带计算下总时间
  4. */
  5. public class PrimerTest{
  6. public static void main(String args[]){
  7. int count = 0;
  8. long start = System.currentTimeMillis();
  9. label: for (int i = 2; i <= 100000; i++)
  10. {
  11. for (int j = 2; j <= Math.sqrt(i); j++)
  12. {
  13. if(i % j == 0)
  14. continue label;
  15. }
  16. count++;
  17. }
  18. long end = System.currentTimeMillis();
  19. System.out.printf("100000内共%d个质数,花费%dms\n", count, end-start);
  20. }
  21. }

image.png

  1. System.currentTimeMillis()方法的使用
  2. continue/break使用标签跳出多层

螺旋矩阵

  1. package stu.zdkk.java;
  2. import java.util.Arrays;
  3. import java.util.Scanner;
  4. /**
  5. *
  6. * @Description 螺旋矩阵
  7. * 从键盘输入一个整数(1~20)
  8. 则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如: 输入数字2,则程序输出:
  9. 1 2
  10. 4 3
  11. 输入数字3,则程序输出:
  12. 1 2 3
  13. 8 9 4
  14. 7 6 5
  15. 输入数字4, 则程序输出:
  16. 1 2 3 4
  17. 12 13 14 5
  18. 11 16 15 6
  19. * @author zdkk Email: 1040893382@qq.com
  20. * @version
  21. * @date 2021年1月18日下午6:49:05
  22. */
  23. public class PracticeTest7 {
  24. public static void main(String[] args) {
  25. int num = new Scanner(System.in).nextInt();
  26. int arr[][] = new int[num][num];
  27. int k = 1;//向右,=2向下,=3向左,=4向上
  28. int i = 0;//i控制转圈个数 i∈[0,num)
  29. int j = 0;//j控制每条边赋值元素个数
  30. for(int m=1; m<=num*num; m++)
  31. {
  32. if(k == 1)
  33. {
  34. //向右
  35. if(j<num && arr[i][j] == 0)
  36. {
  37. arr[i][j++] = m;
  38. }
  39. else
  40. {
  41. k = 2;
  42. i++;
  43. j--;
  44. m--;
  45. }
  46. }
  47. else if(k==2)
  48. {
  49. //向下
  50. if(i<num && arr[i][j] == 0)
  51. {
  52. arr[i++][j] = m;
  53. }
  54. else
  55. {
  56. k = 3;
  57. i--;
  58. j--;
  59. m--;
  60. }
  61. }
  62. else if(k==3)
  63. {
  64. //向左
  65. if(j>=0&&arr[i][j]==0)
  66. {
  67. arr[i][j--] = m;
  68. }
  69. else
  70. {
  71. k = 4;
  72. i--;
  73. j++;
  74. m--;
  75. }
  76. }
  77. else if(k==4)
  78. {
  79. //向上
  80. if(i>=0&&arr[i][j]==0)
  81. arr[i--][j] = m;
  82. else
  83. {
  84. k=1;
  85. i++;
  86. j++;
  87. m--;
  88. }
  89. }
  90. }
  91. // Arrays.toString(arr);
  92. for (int m = 0; m < arr.length; m++) {
  93. for (int n = 0; n < arr[m].length; n++) {
  94. System.out.print(arr[m][n] + "\t");
  95. }
  96. System.out.println();
  97. }
  98. }
  99. }