【Java】逻辑控制

目录

一、if语句

二、switch语句

三、while循环

四、for循环

五、do...while 循环

六、循环中的特殊语句

1、break语句

2、continue语句

七、Java中的输入输出

1、输出

2、输入

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

使用 Scanner 循环读取 N 个数字

猜数字小游戏


逻辑控制是所有程序世界里必不可缺的部分,生活中其实也是如此(选择小学,选择高中,选择大学,选对象,选择考公 考研 出国或者直接工作....)人生处处充满抉择,结果有时不如意,大家也别灰心放弃,因为机会说不准就在下一个选择的拐角处等着你呢~

Java的世界其实也是少不了逻辑控制选择的,接下来带大家康康Java中的部分基础逻辑控制语句。

一、if语句

1、if 语句语法形式:

if(布尔表达式){
   //条件满足时执行代码
}
2、if...else 语句语法形式:
if(布尔表达式){
   //条件满足时执行代码
}else{
   //条件不满足时执行代码
}

3、if...else if...else  语句语法形式
if(布尔表达式){
   //条件满足时执行代码
}else if(布尔表达式){
   //条件满足时执行代码
}else{
   //条件都不满足时执行代码
}

讲了这么多语法,来个实例。

判断一年是否为闰年,如下:

int year = 2000;
if (year % 100 == 0) {
    // 判定是否为世纪闰年
    if (year % 400 == 0) {
        System.out.println("是闰年");
   } else {
        System.out.println("不是闰年");
   }
} else {
    // 判定是否为普通闰年
    if (year % 4 == 0) {
        System.out.println("是闰年");
比特科技
   } else {
        System.out.println("不是闰年");
   }
}

注意:

1、if...else 语句可以不加大括号。 但是也可以写语句 ( 只能跟一条语句,如果你写了多个,系统就会只默认跟在它后面的一条语句为 if / else 中的语句 )。
2、若有多个if 条件句,只有一个else 的情况下,此时 else  是和 最接近的 if 匹配。
int x = 10;
int y = 10;
if (x == 10) 
 if (y == 10)
 System.out.println("aaa");
else
 System.out.println("bbb");
//因为else与最近的if匹配,因此输出结果为aaa

二、switch语句

基本语法:
switch( ){
     case 内容1 : {
     内容满足时执行语句;
     break;
 }
     case 内容2 : {
     内容满足时执行语句;
     break;
 }
 ...
     default:{
     内容都不满足时执行语句;
     break;
 } 
}
例:根据 day 的值输出星期。
int day = 1;
switch(day) {
    case 1:
        System.out.println("星期一");
        break;
    case 2:
        System.out.println("星期二");
        break;
    case 3:
        System.out.println("星期三");
        break;
    case 4:
        System.out.println("星期四");
        break;
    case 5:
        System.out.println("星期五");
        break;
    case 6:
        System.out.println("星期六");
        break;
    case 7:
        System.out.println("星期日");
        break;
    default:
        System.out.println("输入有误");
        break; }
根据 switch 中值的不同 , 会执行对应的 case 语句 。遇到 break 就会结束该 case 语句。
如果 switch 中的值没有匹配的 case, 就会执行 default 中的语句。
注意:
1、break 注意不要遗漏,如果漏写了,满足条件之后,并不会立刻跳出循环而是一直往下执行,会输出之后的值,直至碰到break语句,这样就无法得到我们想要的结果。

2、switch 中的值只能是 int / byte / short / enum / char / String。 

 long   float   double  boolean 都不可以作为switch的参数。

三、while循环

基本语法格式:

while(循环条件){ 
循环语句; 
}
若循环条件为 true, 则执行循环语句; 否则结束循环。
注意:
1、一定要有可以打破循环的条件,否则会成为死循环。
2、 if 类似, while 后的语句可以不写 { } , 但是不写的时候只能支持一条语句。
说这么多语法,来点 while 循环的实例。
1、 计算 5 的阶乘。
int n = 1; 
int result = 1; 
while (n <= 5) { 
 result *= n; //这步相当于result=n*result
 n++; 
} 
System.out.println(num); // 执行结果为120

2、计算 1! + 2! + 3! + 4! + 5! 

int num = 1; 
int sum = 0; 
while (num <= 5) { // 外层循环负责求阶乘的和
 int factorResult = 1; 
 int tmp = 1; 
 while (tmp <= num) { // 里层循环负责完成求每个阶乘的值
 factorResult *= tmp; 
 tmp++; 
 } 
 sum += factorResult; 
 num++; 
} 
System.out.println("sum = " + sum);

四、for循环

基本语法:
for(表达式1;表达式2;表达式3){ 
循环体; 
}
表达式 1: 用于初始化循环变量。
表达式2: 循环条件。
表达式3: 更新循环变量。
例一:计算 5 的阶乘。
int result = 0; 
for (int i = 1; i <= 5; i++) { 
 result *= i; 
} 
System.out.println("result = " + result);

例二:计算 1! + 2! + 3! + 4! + 5!

int sum = 0; 
for (int i = 1; i <= 5; i++) { //外循环为要求的五个数
 int tmp = 1; 
 for (int j = 1; j <= i; j++) { //内循环求每个数的阶乘
 tmp *= j; 
 } 
 sum += tmp; 
} 
System.out.println("sum = " + sum);

(这题的易错点:tmp定义时,记得放在内循环外,外循环里,如果放在外循环外部的话,tmp相当于只会初始化一次,后续求阶乘会出问题从而得不到我们想要的结果)

五、do...while 循环

基本语法格式:

do{ 
循环语句; 
}while(循环条件);
先执行循环语句 , 再判定循环条件。( 有先上车,后补票 // 先斩后奏 那味了)
例:打印1~10。
int num = 1; 
do { 
 System.out.println(num); 
 num++; 
} while (num <= 10); 

注意:do...while 循环最后的分号不要忘记。一般do while用的比较少,while和for循环用的是最多的。

六、循环中的特殊语句

1、break语句

break 的功能是让循环提前结束。

例:找到 100 ~ 200 中第一个为 3 的倍数的数字并打印。

int num = 100; 
while (num <= 200) { 
 if (num % 3 == 0) { 
 System.out.println("找到了 3 的倍数, 为:" + num); 
 break; 
 } 
 num++; 
} 
// 执行结果 找到了 3 的倍数, 为:102

由此可见break可以跳出循环。若有嵌套的循环,break跳出的是离自己最近的循环。

2、continue语句

continue 的功能是跳过这次循环 , 立即进入下次循环。
例:找到 100 - 200 中所有 3 的倍数
int num = 100; 
while (num <= 200) { 
 if (num % 3 != 0) { 
 num++;
 continue; 
 } 
 System.out.println("找到了 3 的倍数, 为:" + num); 
 num++; 
}
由上述可以看出,continue语句是立马跳过本次循环(无视continue后面的语句的),直接到判断条件,如果符合接着执行下一次循环,但不是直接跳出整个循环。

七、Java中的输入输出

1、输出

这个在第一节初识Java中也有提到过,Java中的输出大体分三种。

1、System.out.println("hello world");   // 输出一个字符串, 带换行。

2、System.out.print("hello world");   // 输出一个字符串, 不带换行

3、  int a=77;

       System.out.printf("a=%d\n",a);    //和c语言中的一样,格式化输出。

以下为部分格式化转换符:
【Java】逻辑控制_第1张图片

2、输入

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

import java.util.Scanner; // Scanner 使用时需要导入 util 包
Scanner sc = new Scanner(System.in); 
System.out.println("请输入你的姓名:"); 
String name = sc.nextLine();   //读取一个字符串
System.out.println("请输入你的年龄:"); 
int age = sc.nextInt();        //读取一个整数
System.out.println("请输入你的工资:"); 
float salary = sc.nextFloat(); //读取一个浮点数
System.out.println("你的信息如下:"); 
System.out.println("姓名: "+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary); 


// 执行结果
请输入你的姓名:
张三
请输入你的年龄:
18 
请输入你的工资:
1000 
你的信息如下:
姓名: 张三
年龄:18 
工资:1000.0 

当然除了上述也支持 nextBoolean()、nextByte()、nextShort()等输入的数据类型。

使用 Scanner 循环读取 N 个数字

 Scanner sc = new Scanner(System.in);
 while (sc.hasNextDouble() ){
     .....
}
可用的语句如下,这些方法的返回值都是boolean类型,表示如果输入的一直是这个类型的值,将会持续进行读取数字——执行程序的过程。
(一般来说刷题可能会用到,因为一般都是有好几个组用例要pass的,所以要循环输入才行)
【Java】逻辑控制_第2张图片

那要怎么才能结束呢?

使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl + d)即可结束。

猜数字小游戏

最后写个猜数字的小游戏来结束本篇啦~

拓展一个random的用法(用之前也要导入 util 包)——

random random = new Random();  // 默认随机种子是系统时间
int guess= random.nextInt(100);     //代表guess变量的随机值的范围为[0~100)  左闭右开
当然也有其他类型——
【Java】逻辑控制_第3张图片

import java.util.Random; 
import java.util.Scanner;
class Test { 
 public static void main(String[] args) { 
 Random random = new Random(); 
 Scanner sc = new Scanner(System.in); 
 int guess = random.nextInt(100); 
 while (true) { 
     System.out.println("请输入要输入的数字: (1-100)"); 
     int num = sc.nextInt(); 
         if (num < guess) { 
             System.out.println("低了"); 
         } else if (num > guess) { 
             System.out.println("高了"); 
         } else { 
             System.out.println("猜对了"); 
             break; 
         } 
     } 
  } 
}

 最后运行结果为:

【Java】逻辑控制_第4张图片

 是不是很有趣呢,会了循环和逻辑后还可以写出更多有意思的小游戏。

下一篇就是关于方法(函数)的使用了 真心觉得自己写的好慢哈哈哈

to be continue →

欢迎大家互相探讨交流补充 欢迎捉虫!

你可能感兴趣的:(Java,java,开发语言,后端)