Java 语言基础(JSD BASICS DAY04)

本文详细介绍了Java编程中的分支结构(if,if...else,if...elseif,switch...case)以及Scanner类的使用,同时涵盖了循环结构(while,do...while,for循环),包括break和continue的用法,以及如何通过嵌套循环实现九九乘法表。
摘要由CSDN通过智能技术生成

day 04

目录

day 04

Scnner

三种程序结构

分支结构

  分支结构共分四类:

if结构(单分支)

执行过程

练习

 if……else结构(双分支)

语法

执行过程

练习

 if……else if结构(多分支)

语法

执行过程

练习

 switch……case结构(条件控制)

语法

执行过程

练习

特殊情况:

循环

循环结构分类

while结构

语法:

执行过程:

练习

do...while结构

语法:

执行过程:

练习

for循环

 break ,continue


Scnner

Scanner是Java的一个类,它位于java.util包中。Scanner类提供了一种方便的方式来从标准输入中读取用户的输入。

使用Scanner类可以读取不同类型的输入数据,例如整数,浮点数,字符串等等。它提供了多个方法来读取不同类型的数据,如nextInt()用于读取整数,nextDouble()用于读取浮点数,nextLine()用于读取字符串等等。

以下是一个简单的示例,演示如何使用Scanner类从标准输入读取用户的输入:

import java.util.Scanner;

public class Main { public static void main(String[] args) { // 创建一个Scanner对象 Scanner scanner = new Scanner(System.in);

    // 读取用户的输入
    System.out.println("请输入一个整数:");
    int num = scanner.nextInt();
    System.out.println("您输入的整数是:" + num);

    System.out.println("请输入一个字符串:");
    String str = scanner.nextLine();
    System.out.println("您输入的字符串是:" + str);

    // 关闭Scanner对象
    scanner.close();
}

}

在上面的示例中,首先我们创建了一个Scanner对象,然后使用nextInt()方法读取用户输入的整数,并使用nextLine()方法读取用户输入的字符串,最后关闭Scanner对象。

注意:在使用Scanner类之前,需要先导入java.util.Scanner包。另外,在读取完整数后,如果接下来要读取字符串,需要在读取完整数后调用nextLine()方法,以消耗掉换行符。否则,读取字符串时会直接读取到换行符。

三种程序结构

任何复杂的程序逻辑,都可以通过三种结构来实现:

  • 顺序结构是程序中按照顺序执行的结构,即一条接一条地执行代码。
  • 选择结构是根据条件执行不同的代码块。常见的选择结构有if语句和switch语句。
  • 循环结构允许重复执行一段代码,直到满足特定条件后退出循环。常见的循环结构有for循环、while循环和do-while循环。

通过这三种结构的组合使用,可以实现复杂的程序逻辑。

分支结构

  分支结构共分四类:

  1. 单分支结构(if):只有一个条件,根据条件的真假执行不同的操作。

  2. 双分支结构(if……else):有两个条件,根据条件的真假分别执行不同的操作。

  3. 多分支结构(if……else if):有多个条件,根据条件的真假分别执行不同的操作。

  4. 条件控制结构(switch……case):用于根据某个表达式的值来选择执行不同的代码块。它类似于if-else结构,但适用于多个条件的情况。

if结构(单分支)

语法

 if(boolean){

    语句块

}

执行过程

练习
//商场打折满两千打五折
double  price = 2500;
if(price>=2000){
    price*=0.8;
}
System.out.println("应付款:"+price)
 if……else结构(双分支)
语法

if(boolean){

        语句块1

}else{

        语句块2

}

语句块1,语句块2,必执行其中之一,不会出现都执行,或者都不执行的情况

执行过程

练习
//商场打折,满2000打五折,不满2000打8折
   double price =2500     //分别入大于两千和小于两千的数
   if(price>=2000){
        price*=0.8;
    }else{
        price*=0.8;
    }
    System.out.println("实际应付:"+price+"元");
 if……else if结构(多分支)
语法

if(boolean-1){

        语句块1

}else if(boolean2){

        语句块2

}else if(boolean-n){

        语句块n

}else{

        语句块n+1

}

执行过程

练习
//商场打折 满2000打五折,满1000不满2000打7折,满500不满1000打8折,不满500打9折
  double price = 25000  //分别带入满足各情况的数
      if(price>=2000){      
        price*=0.5;
       }else if(price>=1000){
        price*=0.7;
       }else if(price>=500){
        price*=0.8;
       }else{
        price*=0.9;
        }
        System.out.println("实际应付;"+price+"元");
 switch……case结构(条件控制)
语法

expression 可以是 int, short,byte,char ,String类型和枚举

value         为符合上述类型的值

switch (expression) {
    case value1:
        // 执行代码块1
        break;
    case value2:
        // 执行代码块2
        break;
    case value3:
        // 执行代码块3
        break;
    ...
    default:
        // 执行默认代码块
}
 

执行过程

练习
import java.util.Scanner;

public class SwitchExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个数字(1-7):");
        int day = scanner.nextInt();

        String dayOfWeek;
        switch (day) {
            case 1:
                dayOfWeek = "星期一";
                break;
            case 2:
                dayOfWeek = "星期二";
                break;
            case 3:
                dayOfWeek = "星期三";
                break;
            case 4:
                dayOfWeek = "星期四";
                break;
            case 5:
                dayOfWeek = "星期五";
                break;
            case 6:
                dayOfWeek = "星期六";
                break;
            case 7:
                dayOfWeek = "星期日";
                break;
            default:
                dayOfWeek = "输入有误";
                break;
        }

        System.out.println(dayOfWeek);
    }
}
 
特殊情况:

一个switch语句中,如果所有的case都没有break,那么程序会继续执行下一个case语句,直到遇到break或者switch语句结束为止。

int num = 1;        //任意带数测试结果,或更改break 的位置和数量
    switch (num) {
       case 0: 
         System.out("zero");
        case 1:
         System.out("one");
        case 2:
         System.out("two");
         break;        
        case 3: 
         System.out("three");
        default:
         System.out("默认输出");
    }
  
 

循环

循环是一种重复执行某个代码块的结构。在程序中,循环通常用于执行重复的任务,直到满足某个条件为止。

循环的三个主要组成部分是:

       循环变量:循环变量用于控制循环的次数,必须初始化。

       循环条件:循环条件用于判断是否继续执行循环。

       循环体:    循环体是要重复执行的代码块。

循环结构分类

while结构

语法:

循环变量初始化

while(循环条件){

      【改变循环变量的值】

        循环体

      【改变循环变量的值】

}

 int count = 0; // 初始化计数器  
  
        while (count < 5) { // 检查计数器是否小于5  
            System.out.println("这是第 " + (count + 1) + " 次循环"); // 执行循环体  
            count++; // 更新计数器  
        }  
  
        System.out.println("循环结束"); // 循环后的代码  
    }  
执行过程:

练习
import java.util.Scanner;

public class GuessNumberGame {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // 生成一个1到100之间的随机数作为答案
        int answer = (int)(Math.random() * 100) + 1;
        
        // 初始化猜测次数为0
        int guesses = 0;
        
        // 循环进行猜测
        while (true) {
            System.out.print("请输入一个1到100之间的数:");
            int guess = scanner.nextInt();
            
            // 猜测次数加1
            guesses++;
            
            // 判断猜测的数与答案的大小关系
            if (guess > answer) {
                System.out.println("猜大了");
            } else if (guess < answer) {
                System.out.println("猜小了");
            } else {
                System.out.println("恭喜你,猜对了!");
                break;
            }
        }
        
        // 输出猜测的次数
        System.out.println("你猜了" + guesses + "次");
        
        scanner.close();
    }
}
 

do...while结构

        do...while 结构适用于需要至少执行一次循环体内代码的情况。

语法:

循环变量初始化

do{

      【改变循环变量的值】

        循环体

      【改变循环变量的值】

}while(循环条件)

int count = 0; // 初始化计数器

do {
    System.out.println("这是第 " + (count + 1) + " 次循环"); // 执行循环体
    count++; // 更新计数器
} while (count < 5); // 检查计数器是否小于5

System.out.println("循环结束"); // 循环后的代码
```
执行过程:

练习
import java.util.Scanner;

public class GuessingGame {
    public static void main(String[] args) {
        int secretNumber = (int) (Math.random() * 100); // 随机生成一个0-99之间的数
        int guess;
        int attempts = 0; // 记录猜测的次数

        Scanner input = new Scanner(System.in);

        System.out.println("欢迎来到猜字游戏!");

        do {
            System.out.print("请输入一个猜测的数字(0-99之间):");
            guess = input.nextInt();

            if (guess < secretNumber) {
                System.out.println("猜小了,请再试一次。");
            } else if (guess > secretNumber) {
                System.out.println("猜大了,请再试一次。");
            }

            attempts++;

        } while (guess != secretNumber);

        System.out.println("恭喜你,猜对了!正确的数字是 " + secretNumber);
        System.out.println("你总共猜测了 " + attempts + " 次。");

        input.close();
    }
}
 

for循环

Java的for循环用于重复执行一段代码固定次数的情况。它的语法如下:

for (初始化语句; 循环条件; 循环后操作) {
    执行的代码;
}

其中,初始化语句用于初始化循环变量;循环条件是一个布尔表达式,如果为true则继续执行循环,如果为false则跳出循环;循环后操作用于更新循环变量。

下面是一个简单的例子,使用for循环打印出数字1到5:

for (int i = 1; i <= 5; i++) {
    System.out.println(i);
}

输出结果为:

1
2
3
4
5

 break ,continue

在Java循环中,break和continue是两个控制流语句,用于改变循环的执行流程。

  1. break语句:当循环遇到break语句时,会立即终止循环的执行,并且跳出循环体。通常用于在满足某个条件时提前结束循环。

例如,下面的代码使用for循环遍历一个数组,当找到目标值时使用break语句终止循环:

int[] arr = {1, 2, 3, 4, 5};
int target = 3;

for (int i = 0; i < arr.length; i++) {
    if (arr[i] == target) {
        System.out.println("目标值找到,位置为:" + i);
        break;  // 终止循环
    }
}

在以上代码中,当循环到arr[2]时,发现目标值为3,就会执行break语句,终止循环。

  1. continue语句:当循环遇到continue语句时,会立即结束当前迭代,继续下一次迭代。通常用于在满足某个条件时跳过当前迭代。

例如,下面的代码使用for循环打印1到10之间的所有奇数,当遇到偶数时使用continue语句跳过当前迭代:

for (int i = 1; i <= 10; i++) {
    if (i % 2 == 0) {
        continue;  // 跳过当前迭代
    }
    System.out.println(i);
}

在以上代码中,当i等于2、4、6、8、10时,满足i % 2 == 0的条件,就会执行continue语句,跳过当前迭代,直接进入下一次迭代。

以上就是break和continue在Java循环中的应用。它们可以用于在特定条件下改变循环的执行流程,提高代码的灵活性和效率。

嵌套循环

在Java中使用嵌套循环的主要目的是处理具有复杂结构和多层次的问题。

经典问题用嵌套循环写一个九九乘法表

我们先来分析一下乘法表的构成如图:

这个乘法表是由一个多行多列的表格组成的,咱们可以先试着输出一行或者一列

for(int i = 1; i<=9;i++){
    System.out.println("1*"+i+"="+1*i);
}

得到1*1到1*9的乘法表

 

for(int i = 1; i<=9;i++){
    System.out.print(i+"*9"+"="+9*i+"\t");
}

 

 print 为同行输出

"\t"为自动补齐(水平制表位符自动补齐8位)

int num = 6
for(int i =1 ;i<=num;i++){
     System.out.print(i+"*"+num+"="+i*num+"\t")
}

咱们可以多带入几次num发现改变num 的值就可以输出1*num到num*num的行

如果我们把上面的两个程序结合一下运用用循环嵌套方式

外层循环控制行数,

内层循环控制每行的列数。

在内层循环中,通过 System.out.print 打印出每个乘法表达式的结果,

并使用制表符 \t 进行对齐。

每行打印完毕后,使用 System.out.println 进行换行。

附代码

public class MultiplicationTable {
    public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j + " * " + i + " = " + (i * j) + "\t");
            }
            System.out.println();
        }
    }
}

文章有问题欢迎指正。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值