逻辑控制与它的小九九

前言

学习了c语言,大家对逻辑控制语句肯定有了一定的认识。

那么Java与C语言又有什么区别呢?

让我来为大家解开这个神秘的面纱,一同走进Java逻辑控制语句的学习吧!!!


目录

前言

1. 顺序结构

2. 分支结构

2.1 if 语句

2.2 switch 语句

3. 循环结构

3.1 while 循环

3.2 break

3.3 continue

3.4 for 循环

4. 输入输出

4.1 输出到控制台

4.2 从键盘输入

5.练习题型

1.猜数字游戏

2.打印X形图案


1. 顺序结构

顺序结构比较简单,按照代码书写的顺序一行一行执行。

System.out.println("aaa");
System.out.println("bbb");
System.out.println("ccc");

// 运行结果
aaa
bbb
ccc

如果调整代码的书写顺序, 则执行顺序也发生变化

2. 分支结构

2.1 if 语句

1. 语法格式1

if(布尔表达式)

{// 语句}

如果布尔表达式结果为true,执行if中的语句,否则不执行。

2. 语法格式2

如果布尔表达式结果为true,则执行if中语句,否则执行else中语句。

if(布尔表达式){

// 语句1

}else{

// 语句2

}

3. 语法格式3

表达式1成立,执行语句1,否则表达式2成立,执行语句2,否则执行语句3

if(布尔表达式1){

// 语句1

}else if(布尔表达式2){

// 语句2

}else{

// 语句3

}

注意事项:

是 Java 中更推荐 { 放在 if / else 同一行. 代码跟紧凑。

 推荐

int x = 10;

if (x == 10) {

// 语句1

} else {

// 语句2

}

悬垂 else 问题

int x = 10;

int y = 10;

if (x == 10)

    if (y == 10)

       System.out.println("aaa");

else

       System.out.println("bbb");

注意事项

  • if / else 语句中可以不加 大括号 . 但是也可以写语句(只能写一条语句).
  • 此时 else 是和最接近的 if 匹配.但是实际开发中我们 不建议 这么写. 最好加上大括号.

2.2 switch 语句

基本语法

switch(表达式){

  case 常量值1:{

  语句1;[break;]

  }

  case 常量值2:{

  语句2;

  [break;]

  }

  default:{

  内容都不满足时执行语句;

  [break;]

  }

  }

执行流程:

1. 先计算表达式的值

2. 和case依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到break时结束

3. 当表达式的值没有与所列项匹配时,执行default

代码示例: 根据 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;
}

【注意事项】

  • 多个case后的常量值不可以重复
  • switch的括号内只能是以下类型的表达式:
  1.    基本类型:byte、char、short、int,注意不能是long、double、float类型
  2.     引用类型:String常量串、枚举类型
  • break 不要遗漏, 否则会失去 "多分支选择" 的效果
  • switch 不能表达复杂的条件
  • switch 虽然支持嵌套, 但是很丑,一般不推荐~

3. 循环结构

3.1 while 循环

while(循环条件){

循环语句;

}

基本语法格式:循环条件为 true, 则执行循环语句; 否则结束循环.

代码示例1: 打印 1 - 10 的数字

int num = 1;

while (num <= 10) {  //如果num<10,就进入循环

System.out.println(num);

num++;

}

注意事项

1. 和 if 类似, while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }

2. 和 if 类似, while 后面的 { 建议和 while 写在同一行.

3. 和 if 类似, while 后面不要多写 分号, 否则可能导致循环不能正确执行.

int num = 1;

while (num <= 10); {

   System.out.println(num);

   num++;

}// 执行结果

[无任何输出, 程序死循环]

此时 ; 为 while 的语句体(这是一个空语句), 实际的 { } 部分和循环无关. 此时循环条件 num <= 10 恒成立, 导致代码死循环了.

3.2 break

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

代码示例: 找到 100 - 200 中第一个 3 的倍数(break截止最近的循环)

int num = 100;

while (num <= 200) {

if (num % 3 == 0) {

  System.out.println("找到了 3 的倍数, 为:" + num);

   break;

}num++;

}// 执行结果找到了 3 的倍数, 为:102

执行到 break 就会让循环结束.

3.3 continue

continue 的功能是跳过这次循环, 立即进入下次循环.

int num = 100;

while (num <= 200) {

if (num % 3 != 0) {

    num++; // 这里的 ++ 不要忘记! 否则会死循环.

    continue;}

System.out.println("找到了 3 的倍数, 为:" + num);

num++;}

执行到 continue 语句的时候, 就会立刻进入下次循环(判定循环条件), 从而不会执行到下方的打印语句.

3.4 for 循环

【基本语法】

for(表达式①;布尔表达式②;表达式③){

表达式④;

}

表达式1: 用于初始化循环变量初始值设置,在循环最开始时执行,且只执行一次

表达式2: 循环条件,满则循环继续,否则循环结束

表达式3: 循环变量更新方式

【注意事项】 (和while循环类似)

1. 和 if 类似, for 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }

2. 和 if 类似, for 后面的 { 建议和 while 写在同一行.

3. 和 if 类似, for 后面不要多写 分号, 否则可能导致循环不能正确执行.

4. 和while循环一样,结束单趟循环用continue,结束整个循环用break

4. 输入输出

4.1 输出到控制台

基本语法

System.out.println(msg); // 输出一个字符串, 带换行

System.out.print(msg); // 输出一个字符串, 不带换行

System.out.printf(format, msg); // 格式化输出

注意事项

  1. println 输出的内容自带 \n, print 不带 \n
  2. printf 的格式化输出方式和 C 语言的 printf 是基本一致的.

4.2 从键盘输入

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

import java.util.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);sc.close();

// 注意, 要记得调用关闭方法

// 执行结果请输入你的姓名:

张三

请输入你的年龄:

18

请输入你的工资:

1000

你的信息如下:

姓名: 张三

年龄:18

工资:1000.0

注意事项:

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

5.练习题型

1.猜数字游戏

要求:系统自动生成一个随机整数(1-100), 然后由用户输入一个猜测的数字. 如果输入的数字             比该随机数小, 提示 "低了", 如果输入的数字比该随机数大, 提示 "高了" , 如果输入的               数字和随机数相等, 则提示 "猜对了" .

解析:1.编写程序,使用Radom使系统随机生成数字。

           2.与系统随机生成的数字进行比较,判断高低与否,用break结束循环

1.用Radom使系统随机生成数字

Random random = new Random(); 
// 默认随机种子是系统时间(导包)
int toGuess = random.nextInt(100);
//生成所需的随机数,100指的是生成[0~100)的随机数

2.若生成了一个随机数,那我们需要采用循环来不断猜,若猜中了用break跳出循环

while (true) {
System.out.println("请输入要输入的数字: (1-100)");
int num = sc.nextInt();
if (num < toGuess) {
System.out.println("低了");
} else if (num > toGuess) {
System.out.println("高了");
} else {
System.out.println("猜对了");
break;
}
}

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 toGuess = random.nextInt(100);
//生成所需的随机数,100指的是生成[0~100)的随机数
while (true) {
System.out.println("请输入要输入的数字: (1-100)");
int num = sc.nextInt();
if (num < toGuess) {
System.out.println("低了");
} else if (num > toGuess) {
System.out.println("高了");
} else {
System.out.println("猜对了");
break;
}
}
sc.close();
}
}

​

2.打印X形图案

打印用“*”组成的X形图案。

输入描述:

多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。

示例:

思路

  • 用 i 表示行,j 表示列
  • 外层for循环为行,内层for循环为列
  • "*"的左斜线位置为 i = j ,"*"的右斜线位置为 i+j = n+1
  • 剩下的位置打印空格。

import java.util.Scanner;
public class Test {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (scan.hasNextInt()) {
            int n = scan.nextInt();
            int i = 0, j = 0;
            for (i = 0; i < n; i++) {
                for (j = 0; j < n; j++) {
                    if (i == j|| (i + j) == n - 1) {
                        System.out.print("*");
                    } else {
                        System.out.print(" ");
                    }
                }
                System.out.println();
            }
        }
    }

易错提醒

若出现以上状况,则是print错写成println(自带换行)


如果您觉得有失偏颇请您在评论区指正,如果您觉得不错的话留个好评再走吧!!

您的鼓励就是对我最大的支持!  ! !

  • 64
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值