• JavaSE---逻辑控制


    目录

    1、switch 语句

    2、while 循环

    3、for 循环

    4、输入输出

    4.1 输出到控制台

     4.2 从键盘输入

    5、猜数字游戏

    6、练习


    1、switch 语句

    1. int day = 1;
    2. switch(day)
    3. {
    4. case 1:
    5. System.out.println("星期一");
    6. break;
    7. case 2:
    8. System.out.println("星期二");
    9. break;
    10. case 3:
    11. System.out.println("星期三");
    12. break;
    13. case 4:
    14. System.out.println("星期四");
    15. break;
    16. case 5:
    17. System.out.println("星期五");
    18. break;
    19. case 6:
    20. System.out.println("星期六");
    21. break;
    22. case 7:
    23. System.out.println("星期日");
    24. break;
    25. default:
    26. System.out.println("输入有误");
    27. break;
    28. }
    注意事项
            多个case 后的常量值不可以重复
            switch的括号内只能是以下类型的表达式:
    • 基本类型:byte、charshortint,注意不能是long类型  
    • 引用类型:String常量串、枚举类型
    1. double num = 1.0;
    2. switch(num)
    3. {
    4.         case 1.0:
    5.                 System.out.println("hehe");
    6.                 break;
    7.         case 2.0:
    8.                 System.out.println("haha");
    9.                 break;
    10. }
    编译出错
    Test . java : 4 : 错误 : 不兼容的类型 : double 转换到 int 可能会有损失
    switch ( num )
    {
         ^
    1 个错误
    • break 不要遗漏, 否则会失去 "多分支选择" 的效果
    • switch 不能表达复杂的条件

    2、while 循环

            计算 1! + 2! + 3! + 4! + 5!
    1. public static void main7(String[] args) {
    2. int j = 1;
    3. int sum = 0;
    4. while (j <= 5) {
    5. int i = 1;
    6. int ret = 1;
    7. while (i <= j) {
    8. ret = ret * i;
    9. i++;
    10. }
    11. sum += ret;
    12. j++;
    13. }
    14. System.out.println(sum);
    15. }

    3、for 循环

            计算 1! + 2! + 3! + 4! + 5!
    1. int sum = 0;
    2. for (int i = 1; i <= 5; i++)
    3. {
    4. int tmp = 1;
    5. for (int j = 1; j <= i; j++)
    6. {
    7. tmp *= j;
    8. }
    9. sum += tmp;
    10. }
    11. System.out.println("sum = " + sum);

    4、输入输出

    4.1 输出到控制台

    System . out . println ( msg );            // 输出一个字符串 , 带换行
    System . out . print ( msg );               // 输出一个字符串 , 不带换行
    System . out . printf ( format , msg ); // 格式化输出
    • println 输出的内容自带 \n, print 不带 \n
    • printf 的格式化输出方式和 C 语言的 printf 是基本一致的. \
    1. public static void main15(String[] args) {
    2. System.out.println("输出且换行!");
    3. System.out.print("输出且不换行!");
    4. System.out.printf("%s\n","真的没换行吗?");
    5. }

     4.2 从键盘输入

            使用 Scanner 读取字符串/整数/浮点数

    1. public static void main16(String[] args) {
    2. Scanner scanner = new Scanner(System.in);
    3. System.out.println("请输入你的姓名:");
    4. String str = scanner.nextLine();
    5. System.out.println(str);
    6. System.out.println("请输入你的年龄:");
    7. int age = scanner.nextInt();
    8. System.out.println(age);
    9. System.out.println("请输入你的工资:");
    10. float money = scanner.nextFloat();
    11. System.out.println(money);
    12. }

            使用 Scanner 循环读取 N 个数字,并求取其平均值

    Scanner sc = new Scanner ( System . in );
    int sum = 0 ;
    int num = 0 ;
    while ( sc . hasNextInt ())
    {
    int tmp = sc . nextInt ();
    sum += tmp ;
    num ++ ;
    }
    System . out . println ( "sum = " + sum );
    System . out . println ( "avg = " + sum / num );
    sc . close ();
    // 执行结果
    10
    40.0
    50.5
    ^Z
    sum = 150.5
    avg = 30.1
            注意事项: 当循环输入多个数据的时候 , 使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl + d).

    5、猜数字游戏

    游戏规则:
            系统自动生成一个随机整数(1-100), 然后由用户输入一个猜测的数字. 如果输入的数字比该随机数小, 提示 "低了", 如果输入的数字比该随机数大, 提示 "高了" , 如果输入的数字和随机数相等, 则提示 "猜对了" .
    1. import java.util.Random;
    2. import java.util.Scanner;
    3. public static void main18(String[] args) {
    4. Scanner scanner = new Scanner(System.in);
    5. Random random = new Random();
    6. int randNum = random.nextInt(101);//[0,101)==>[0,100]
    7. System.out.println("随机数是"+randNum);
    8. while (true) {
    9. System.out.println("请输入你要猜的数字:");
    10. int num = scanner.nextInt();
    11. if(num < randNum) {
    12. System.out.println("猜小了!");
    13. }else if(num == randNum) {
    14. System.out.println("猜对了!");
    15. break;
    16. }else {
    17. System.out.println("猜大了!");
    18. }
    19. }
    20. }

    6、练习

    根据年龄 , 来打印出当前年龄的人是少年 ( 低于 18), 青年 (19-28), 中年 (29-55), 老年 (56 以上 )
    1. public static void main1(String[] args) {
    2. Scanner scan = new Scanner(System.in);
    3. int age = scan.nextInt();
    4. if(age < 18) {
    5. System.out.println("少年!");
    6. }else if(age >= 18 && age < 28) {
    7. System.out.println("青年!");
    8. }else if(age >= 29 && age < 55) {
    9. System.out.println("中年!");
    10. }else {
    11. System.out.println("老年!");
    12. }
    13. }

    打印 1 - 100 之间所有的素数

    1. public static void main(String[] args) {
    2. for (int j = 1; j < 101; j++) {
    3. //int n = 19;
    4. int i = 2;
    5. for (; i <= Math.sqrt(j); i++) {
    6. if(j % i == 0) {
    7. break;
    8. }
    9. }
    10. if(i > Math.sqrt(j)) {
    11. System.out.println(j+" 是素数!");
    12. }
    13. }
    14. }
    1. public static boolean isPrime(int n) {
    2. int i = 2;
    3. for (; i <= Math.sqrt(n); i++) {
    4. if(n % i == 0) {
    5. //System.out.println(n+": 不是素数!");
    6. break;
    7. }
    8. }
    9. if(i > Math.sqrt(n)) {
    10. //System.out.println(n+": 是素数!");
    11. return true;
    12. }
    13. return false;
    14. }
    15. public static void main5(String[] args) {
    16. for (int i = 1; i < 101; i++) {
    17. boolean ret = isPrime(i);
    18. if(ret) {
    19. System.out.println(i+" 是素数!");
    20. }
    21. }
    22. }

    求两个正整数的最大公约数

    1. public static void main(String[] args) {
    2. //辗转相除法
    3. Scanner scanner = new Scanner(System.in);
    4. int a = scanner.nextInt();
    5. int b = scanner.nextInt();
    6. int c = a%b;
    7. while (c != 0) {
    8. a = b;
    9. b = c;
    10. c = a%b;
    11. }
    12. System.out.println(b+" 是最大公约数!");
    13. }

    求出0~999之间的所有水仙花数并输出。(“水仙花数是指一个三位数,其各位数字的立方和确好等于该数本身,如: 1531^35^33^3 ,则153是一个水仙花数)

    1. public static void main(String[] args) {
    2. for (int i = 1; i < 999999; i++) {
    3. int count = 0;
    4. int tmp = i;
    5. while (tmp != 0) {
    6. count++;
    7. tmp = tmp / 10;
    8. }
    9. tmp = i;
    10. int sum = 0;
    11. while (tmp != 0) {
    12. sum += Math.pow(tmp % 10,count);
    13. tmp /= 10;
    14. }
    15. if(sum == i) {
    16. System.out.println(i);
    17. }
    18. }
    19. }

    写一个函数返回参数二进制中 1 的个数比如: 15 0000 1111 4 1

    1. public static void main(String[] args) {
    2. int n = 7;
    3. int count = 0;
    4. for (int i = 0; i < 32; i++) {
    5. if( ((n >> i) & 1) != 0 ) {
    6. count++;
    7. }
    8. }
    9. System.out.println(count);
    10. }
    1. public static void main(String[] args) {
    2. int n = -1;
    3. int count = 0;
    4. while (n != 0) {
    5. if((n & 1) != 0) {
    6. count++;
    7. }
    8. n = n >>> 1;
    9. }
    10. System.out.println(count);
    11. }
    1. public static void main00(String[] args) {
    2. int n = -1;
    3. int count = 0;
    4. while (n != 0) {
    5. n = n &(n-1);
    6. count++;
    7. }
    8. System.out.println(count);
    9. }

    获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。

    1. public static void main(String[] args) {
    2. int n = 7;
    3. for (int i = 31; i >= 1 ; i-=2) {
    4. //偶数位
    5. System.out.print(((n >> i) & 1)+" ");
    6. }
    7. System.out.println();
    8. for (int i = 30; i >= 0 ; i-=2) {
    9. //奇数位
    10. System.out.print(((n >> i) & 1)+" ");
    11. }
    12. }

    根据输入的行数画出星号组成的图案

    1. public static void main(String[] args) {
    2. Scanner scan = new Scanner(System.in);
    3. while(scan.hasNextInt()) {
    4. int n = scan.nextInt();
    5. for(int i = 0;i < n;i++) {
    6. for(int j = 0;j < n;j++) {
    7. if(i == j) {
    8. System.out.print("*");
    9. }else if( i+j+1 == n) {
    10. System.out.print("*");
    11. }else{
    12. System.out.print(" ");
    13. }
    14. }
    15. System.out.println();
    16. }
    17. }
    18. }

    找出出现一次的数字

    1. public static void main(String[] args) {
    2. int[] array = {1,2,3,2,1};
    3. int sum = 0;
    4. for (int i = 0; i < 5; i++) {
    5. sum = sum ^ array[i];
    6. }
    7. System.out.println(sum);
    8. }

     

  • 相关阅读:
    rk3588 usb网络共享连接
    全篇创新点!图像融合9大魔改创新方案,暴力涨点
    《基于 Vue 组件库 的 Webpack5 配置》8.在生成打包文件之前清空 output(dist) 目录(两种方式)
    C#中的DataTable使用
    exness:欧元区经济意外向好,欧元震荡蓄势等待突破
    Oracle(14) Managing Password Security and Resources
    引擎入门 | Unity UI简介–第1部分(9)
    2022年氯酸钠行业定义及分类
    【华为机试真题 JAVA】求满足条件的最长子串的长度-100
    制作一个简单HTML中华传统文化网页(HTML+CSS)
  • 原文地址:https://blog.csdn.net/weixin_51912875/article/details/125703662