首页 > 编程语言 >JavaSE初识(二)

JavaSE初识(二)

时间:2024-09-15 13:25:29浏览次数:14  
标签:scan int System 初识 println JavaSE public out

目录

逻辑控制

1.顺序结构

2.分支结构

2.1 if 结构

2.1.1 代码

2.1.2 应用 

注意:

2.2 switch 语句:

3. 循环结构

3.1 while 循环

3.2 break

3.3 continue

3.4 for循环

 3.5 do...while循环

4. 输入输出 

5. 应用 

5.1 使用 Scanner 循环读取 N 个数字

5.2 猜数字游戏

5.3 判断一个数字是否是素数

5.4 水仙花数

5.5 写一个函数返回参数二进制中 1 的个数 


逻辑控制

1.顺序结构

2.分支结构

2.1 if 结构

2.1.1 代码
if(布尔表达式){
    //条件满足时执行代码
}



if(布尔表达式){
    //条件满足时执行代码
}else{
    //条件不满足时执行代码
}


if(布尔表达式){
    //条件满足时执行代码
}else if(布尔表达式){
    //条件满足时执行代码
}else{
    //条件都不满足时执行代码
}

调试代码【调试是一个程序员最基本的能力】

通过调试解决问题,步骤如下:

①打断点   鼠标左键

为什么打断点??就是让程序运行到断点处停下来!!本质上程序还在运行

②鼠标右键 Debug

2.1.2 应用 

判断年份是否是闰年 

    public class F {
       public static void main(String[] args) {
           for (int year = 1000; year <= 2000; year++) {
               if (year % 100 == 0) {
                   if (year % 400 == 0) {
                       System.out.println(year + "is 闰年");
                   }
               } else {
                   if (year % 4 == 0) {
                       System.out.println(year + "is 闰年");
                   }
               }
           }
       }
   }

注意:

代码风格问题

// 建议风格
int x = 10;
if (x == 10) {
    // 满足条件
} else {
    // 不满足条件
}

 悬垂 else 问题

   public class F {
       public static void main(String[] args) {
           int x = 10;
           int y = 10;
           if (x == 10)
               if (y == 10)
                   System.out.println("aaa");
           else
                   System.out.println("bbb");
           //else会跟最近的一个if匹配
       }
   }

2.2 switch 语句:

不能做Switch参数的数据类型有哪些?基本数据类型当中:float double long

switch中的值可以是: 整数 | 枚举 | 字符 | 字符串
   public class F {
       public static void main(String[] args) {
         int a = 1;
         switch(a){
             case 1:
                 System.out.println("1");
                 break;
             case 2:
                 System.out.println("2");
                 break;
             case 3:
                 System.out.println("3");
                 break;
             default:
                 break;
         }
       }
   }

3. 循环结构

3.1 while 循环

while(布尔表达式){

    循环体

}

应用

//1! + 2! +3! + 4! +5! +6!
public class F {
       public static void main(String[] args) {
           int k = 1;
           int sum = 0;
           while (k <= 5){
            int n = 1;
            int ret = 1;
            while(n <= k){
                ret = ret * n;
                n ++;
            }
            k++;
            sum = sum +ret;
           }
           System.out.println(sum);
       }
   }

每个循环都是一个独立的个体

3.2 break

break 的功能是让循环提前结束!!!剩下多少趟都不会执行
//找到 100 - 200 中第一个 3 的倍数
public class F {
       public static void main(String[] args) {
           int num = 100;
           while (num <= 200) {
               if (num % 3 == 0) {
                   System.out.println(num);
                   break;
               }
               num++;
           }
       }
   }

3.3 continue

continue 的功能是跳过这次循环 , 立即进入下次循环
//求100--200之间 既能被3整除,也能被4整除的数字   要求使用continue
public class F {
       public static void main(String[] args) {
           int i =100;
           while(i <= 200){
               if (i %3 != 0 || i %4 != 0){
                   i++;
                   continue;
               }
               System.out.println(i);
               i++;
           }
       }
   }

既能被3整除,又能被4整除 的反面 是 i %3 != 0 || i %4 != 0 !!!不是&&

等价于   i % 12 != 0

3.4 for循环

for( 表达式 1;布尔 表达式 2; 表达式 3){ 表达式4; }

应用 

//1!+2!+3!+4!+5!
public class F {
    public static void main(String[] args) {
        int sum = 0;
        for (int j = 1; j <= 5; j++) {
            int ret = 1;
            for (int i = 1; i <= j; i++) {
                ret *= i;
            }
            sum += ret;
        }
        System.out.println(sum);
    }
}
//一定要注意加上变量前的类型!!!

 3.5 do...while循环

do{ 
循环语句; 
}while(循环条件);

4. 输入输出 

import java.sql.SQLOutput;
import java.util.Scanner;//包  输入Scan,回车就出现了

public class F {
    public static void main(String[] args) {
        //Java中的三种输出
        System.out.println("输出且换行!");
        System.out.print("不换行");
        System.out.printf("%d\n",10);

        //导入这个包【include】
        Scanner scan = new Scanner(System.in);//scan是变量
        System.out.println("请输入你的姓名");
        String name = scan.nextLine();//nextLine 读入一行   next是遇到空格结束!!!
        System.out.println("姓名:"+name);

        System.out.println("输入一个年龄");
        int age = scan.nextInt();//读入一个int类型的整数
        System.out.println("年龄:"+age);

        System.out.println("请输入你的工资:");
        float salary = scan.nextFloat();
        System.out.println("工资:"+ salary);
        scan.close();//可以认为scan是一个资源

    }
}

当将年龄那段代码放在字符串(姓名)的前面时,出现了这样的输出结果 

import java.sql.SQLOutput;
import java.util.Scanner;

public class F {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("输入一个年龄");
        int age = scan.nextInt();
        System.out.println("年龄:"+age);

        System.out.println("请输入你的姓名");
        String name = scan.nextLine();
        System.out.println("姓名:"+name);


        System.out.println("请输入你的工资:");
        float salary = scan.nextFloat();
        System.out.println("工资:"+ salary);
        scan.close();

    }
}

原因是  nextLine 读数据的时候会把上一个的回车读进去

为了消除回车的影响,可以在姓名代码的前面加上

scan.nextFloat();//注意回车

5. 应用 

5.1 使用 Scanner 循环读取 N 个数字

import java.sql.SQLOutput;
import java.util.Scanner;

public class F {
    public static void main(String[] args) {
      Scanner scan = new Scanner(System.in);
      while(scan.hasNextInt()){
          int age = scan.nextInt();
          System.out.println(age);

      }

    }
}
当循环输入多个数据的时候 , 使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl + d). 注:IDEA上使用ctrl + d

控制台的输入输出主要是验证结果!!!

5.2 猜数字游戏

import java.util.Random;
import java.util.Scanner;

public class F {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Random random = new Random();//输入Ran然后回车
        int randNum = random.nextInt(100);//[0,100)
        //50-100的随机数  random.nextInt(50)--[0,50) +50
        while (true){
            System.out.println("请输入你要猜的数字:");
            int num = scanner.nextInt();
            if(num < randNum){
                System.out.println("猜小了");
            }else if(num == randNum){
                System.out.println("猜对了");
                break;
            }else{
                System.out.println("猜大了");
            }
        }
    }
}

5.3 判断一个数字是否是素数

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

public class F {
    public static void main(String[] args) {
      for(int n =1;n<=100;n++){
          int i = 2;
          for(;i<=Math.sqrt(n);i++){
             if(n % i == 0) {
                 break;
             }
          }
          //有几种情况 ? 2--》 1.不符合循环条件 (是素数)2.遇到了break (不是素数)
          if(i > Math.sqrt(n)){
              System.out.println(n+"是素数!");
          }
      }
    }
}
//1单独判断

5.4 水仙花数

 

 

求 0 -- 999999之间的
public class F {
    public static void main(String[] args) {
        for(int i = 1;i <= 999999;i++){
            //i = 123
            int count = 0;//记录位数
            int tmp = i;
            while(tmp != 0){
                tmp /= 10;
                count++;
            }
            tmp = i;//123
            int sum = 0;
            while (tmp != 0){
                sum += Math.pow(tmp % 10,count);//sum = sum + ...会报错  因为...返回的是double类型
                tmp /= 10;
            }
            if(sum == i){
                System.out.println(i);
            }
        }

    }
}

5.5 写一个函数返回参数二进制中 1 的个数 

public class F {
    public static void main(String[] args) {
       //求二进制1的个数
        int n = -1;
        int count = 0;
        while(n != 0) {
            n = n & (n - 1);
            count++;
        }
        System.out.println(count);
        }
    }

标签:scan,int,System,初识,println,JavaSE,public,out
From: https://blog.csdn.net/2301_80174936/article/details/142109930

相关文章

  • JavaSE--集合总览04:集合的并发修改问题,Collections类的操作以及可变参数
    一.集合的并发修改问题关于集合的并发修改问题---就是把集合内包含某个值的元素都删了以下是一个实例:要求删除含"李"的元素分析:大家都知道可以遍历集合的方式-----迭代(Iterator),增强型for循环,普通for循环,Lambda简化。前面01有关于遍历的详细介绍喔快速入口:http://t.csdnim......
  • 【JavaSE系列】反射机制
    目录前言一、概述二、获取Class对象三、反射构造方法1.获取构造方法2.获取修饰符、名称和形参3.创建对象四、反射成员变量 1.获取成员变量2.获取修饰符、名称和类型3.赋值/获取值五、反射成员方法1.获取成员方法2.获取修饰符、形参、返回值和异常3.......
  • C语言程序设计(初识C语言后部分)
    不必为小事所困,我们还有更大的世界。(4)模拟实现strlen(求字符串长度)#include<stdio.h>#include<assert.h>//模拟实现strlen(求字符串长度)intmy_strlen(constchar*str)//str指向的数据不需要被修改{ intcount=0; assert(str); while(*str!='\0') { count++;......
  • JavaSE--零基础的开始笔记01:下载JDK以及Path环境变量的 配置
    Java概述(觉得没必要的可以直接跳过):Java是sun公司1995年推出,2009年被oracle收购又称为“甲骨文公司”。java之父:詹姆斯.高斯林java是一门高级语言,接近人类语言程序易懂。流行度很高,商业占用率高,特性是:可移植性---可跨平台         JavaSE:标准版,java技......
  • 关于java学习基础路线的分享【javaSE】
    成长路上不孤单......
  • JavaSE:2、基本数据类型
    1、整数类型在Java中,整数类型包括以下几个:byte字节型(8个bit,也就是1个字节)范围:-128~+127short短整形(16个bit,也就是2个字节)范围:-32768~+32767int整形(32个bit,也就是4个字节)最常用的类型:-2147483648~+2147483647long长整形(64个bit,也就是8个字节)范围:-9223372036854775808~......
  • 密码学初识
    咱也是学上密码学了密码?可能有人要说:啊!这个我懂!不就是账号密码什么的嘛可能还有人说:啊!这个我懂!我还会背摩斯密码呢!但是,“密码学”研究的主要是加密与解密的过程它这个“密码”指的不是寻常说的password(口令),而是cryptography历史上,密码学经过了从古典到近代再到现代的发......
  • 走进C++——初识与探索
    一.C++发展历史  C++的起源可以追溯到1979年,当时BjarneStroustrup(本贾尼·斯特劳斯特卢普)在⻉尔实验室从事计算机科学和软件⼯程的研究⼯作。⾯对项⽬中复杂的软件开发任务,特别是模拟和操作系统的开发⼯作,他感受到了现有语⾔(如C语⾔)在表达能⼒、可维护性和可扩展性......
  • C语言程序设计(初识C语言后部分)
    晴天也会突然下暴雨,温柔的人也会不开心。二十一,实用调试技巧1.什么是bug?2.调试是什么?有多重要?3.debug和release的介绍4.vs环境调试介绍5.如何写出好(易于调试)的代码6.编程常见的错误1.什么是bug?就是使计算机程序或者计算机硬件出现问题,不能正常运行的地方称为bug(缺陷......
  • 【实验楼】Linux系统管理-实验一:初识命令行
    Linux系统管理-实验一:初识命令行尝试简单命令请在命令行中显示当前所处的目录的名字。pwd请在命令行中显示当前主机名。hostname请在命令行中显示当前所使用的用户的名称。whoami尝试命令的选项请下达在15分钟内模拟关机的命令。shutdown-k15shutdown命令:https:/......