Day04 Java 从键盘录入数据及流程控制语句if,switch语句,for,while循环等

30 篇文章 0 订阅

一、从键盘输入数据:

Java提供了一个工具让我们可以手动输入一些数据:Scanner

从键盘输入需要三个步骤:

1、导包:import java.until.Scanner;该行语句放在类class上面。package下面

2、创建数据录入对象:Scanner sc = new Scanner(System.in)

3、调用方法获取键盘输入的数据:两种方法:

int x = sc.nextInt():从键盘获取一个int类型的数据;

注意事项:如果不小心输入了一个不是数字的数据,程序会报错:

                java.util.InputMismatchException:输入不匹配异常

String s = sc.next():从键盘获取一个字符串。

二、流程控制语句:三种结构:顺序结构;选择结构;循环结构

顺序结构:没有特定的语法结构,按照代码的先后顺序依次执行。

选择结构:也被称为分支结构,执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码。

Java提供两种选择结构语句:if语句;switch语句

1、if语句:三种格式:

第一种格式:

if(关系表达式){

        要执行的语句体;

}

注意:

1)、关系表达式中的结果只能是布尔类型的。

2)、若关系表达式中的结果为true,则执行语句体,若是false则不执行。

3)、语句体可以不止一条语句。

4)、if小括号后面可以直接跟分号,但此时if语句不会生效,等于一个空语句体

5)、大括号理论上可以省去,但是当语句体多的时候,不建议省去,因为省去之后面的代码无法执行,建议不管什么情况都不省括号。

第二种格式:

if(关系表达式){

        语句体1;

}else{

        语句体2

}

执行流程:1、判断关系表达式看其结果;2、如果关系表达式结果是true就执行语句体1,如果结果是flase就执行语句体2;3、语句体1和语句体2只会执行一个。

if语句第二种格式与三目运算符之间的转化:当if-else中没有输出语句时可以转化为三目运算符,否则不能;三目运算符转化为if语句时一定可以的,因为,没有输出语句。

class Demo{
    public static void main(String[] args){
        int a = 3;
        int b = 4;
        if(a==b){
        System.out.println("a等于b");
    }else{
        System.out.println("a不等于b");
        }
    
    boolean res = (a==b)?true:false;
    boolean res2 = false;

    if(a==b){
        res2 = true;
    }else{
        res2 = false;    
    }
    System.out.println(res2);
        
    boolean res3 = (a==b)?(res2=ture):(res2=false);
        
    }
}

第三种格式:

if(关系表达式1){

        语句体1;

}else if(关系表达式2){

        语句体2;

}... ...

}else if(关系表达式n){

        语句体n;

}else{

        语句体n+1;

}

执行流程:

1)先判断关系表达式1,若结果是true,执行语句体1,执行完之后,结束if语句。

2)若关系表达式1结果为false,判断关系表达式2,若为true,执行语句体2,执行完结束if语句

3)若关系表达式2结果为false,判断关系表达式3,若为true,执行语句体3,执行完结束if语句

... ... 

4)直到关系表达式n是false的时候,直接执行else中的内容,执行完毕之后结束if语句

注意事项:else语句不一定会执行,只有当前面所有的判断条件都是false的时候,最后才执行else;最后的else可以不写,但是若前面的条件都不满足就没有了默认情况的处理,代码不严谨;else if的个数取决于判断条件的个数

if语句的嵌套:

import java.util.Scanner;

class Demo2 {
    public static void main(String[] args) {
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个数据:");
        int a = sc.nextInt();
        System.out.println("请输入第二个数据:");
        int b = sc.nextInt();
        System.out.println("请输入第三个数据:");
        int c = sc.nextInt();
        //if语句的嵌套实现
        //先拿任意两个数进行比较
        if(a>b){
            //如果走到了这里说明a比b大
            //然后拿a与c进行比较
            if(a>c){
                System.out.println("a,b,c中最大值为a:" + a);
            }else {
                System.out.println("a,b,c中最大值为c:" + c);
            }
        }else {
            //如果走到了这里说明b比a大
            //然后拿b与c进行比较
            if(b>c){
                System.out.println("a,b,c中最大值为b:" + b);
            }else {
                System.out.println("a,b,c中最大值为c:" + c);
            }
}

2、switch语句:

switch语句定义格式:

switch(表达式){

        case 常量值1:

                语句体1;

                break;

        case 常量值2:

                语句体2;

                break;

                   。。。

        case 常量值n:

                语句体n;

                break;

        default:

                语句体n+1;

                break;

}

名词解释:switch:表示这是一个选择语句;  表达式:一定会有一个结果值,结果只可以是byte,short,int,char,JDK1.5之后可以是枚举,JDK1.7之后可以是String;  case:switch中匹配的关键字;     常量值:被匹配的值,只能是常量值;      语句体:当匹配到对应的常量值之后,执行对应的语句体内容,可以不止一条;break:跳出(结束)switch 选择结构;     default:当所有的case都不匹配的时候,默认执行的语句体

switch结构执行流程:

1、首先会计算表达式中的值

2、依次去匹配case中的常量值

3、当匹配到时,执行对应的语句体内容

4、如果所有的case都不匹配,最后再执行dafault中的语句体

5、如果遇到break或者执行代码结束switch选择

注意事项:

1、break可以不写吗?答:可以,但是会发生case“穿透”。

2、defaul可以不写吗?答:可以,但不建议,因为不写代码不严谨。

什么情况下可以不写?答:当只有固定的几个值的时候可以不写。

3、default可以写在最前面吗?若可以,会发生什么情况?

答:可以。

        1)、default的执行顺序与它在switch中的位置无关。

        2)、当default的顺序与break省略同时出现的时候,出来的结果可能会和预想的结果不同。

4、多个case后面 的常量值不能一样。

查看程序执行流程的小技巧:在IDEA中左侧显示行数处选中需要查看的程序,右击选择debug

循环结构:

循环结构的组成:

初始化语句:对变量条件进行初始化

判断条件语句:判断什么时候进入循环

循环体语句:要执行循环的内容

控制条件语句:通过用于控制循环条件的变量,使得循环在合适的时候结束

循环结构分为for循环,while循环

for循环:

for(初始化语句;判断条件语句;控制条件语句){

        循环体语句;

}

注意:初始化语句只执行一次;初始化语句可以省略,但当省略时要在for循环执行前定义好;判断条件语句可以省略,但省略时,for循环会一直执行,无法结束,形成死循环;控制条件语句可以省略不写,但是省略后初始化语句的值不会改变,同样会一直执行,形成死循环;

判断条件语句的结果为一个boolean类型;只有当循环体内容只有一句时,可以省略大括号,若不止一条循环体语句则不可省略大括号,否则for循环只对紧跟在for循环后的一条语句有效.

例题:

class Demo3 {
    public static void main(String[] args) {
        //定义一个变量接收和
        int sum = 0;
        //求1到10的和
        for (int i = 1; i < 11; i++) {
            sum = sum + i;
        }

        System.out.println("1-10的和为:" + sum);

    }
}

while循环:

while(判断条件语句){                                        扩展格式:        while(判断条件语句){

         循环体语句;                                                                             循环体语句;                 

}                                                                                                        控制条件语句;

                                                                                                   }

while循环可以与for循环等价:打印五句你最棒

class Demo4{
    public static void main(String[] args){
        //使用for循环打印十句你最棒
        for(int i=1;i<=5;i++){
            System.out.println("你最棒");
    }
        //使用while循环打印十句你最棒
/*
                初始化语句:int i=1;
                判断条件语句:i<=5;
                循环体语句:System.out.println("你最棒");
                控制条件语句:i++;
         */
        int i=1;
        while(i<=5){
            System.out.println("你最棒"):
            i++;    
    }

}

while循环与for循环的区别:

1、两者之间虽然可以做等价转换,但在开发中遇到在一个范围内做循环的时候,优先使用for循环

2、当循环的次数未知时,优先使用while循环

作用域带来的区别:

3、for循环结束后,初始化语句的变量在循环外无法访问,这意味着当你在同一个类中定义两个for循环时,初始化语句的变量可以相同

4、但while循环结束后,初始化语句的变量可以在外部继续使用

for循环与while循环简单举例:

class Demo5{
    public static void main(String[] args){
//        使用for循环输出一至十的积
        int sum = 1;
        for(int i = 1;i<=10;i++){
            sum = sum * i;
        }
        System.out.println(sum);

//       使用while循环输出一至十的积以及循环次数
        int sum2 = 1;
        int i = 1;//上面for循环中的初始化语句不会影响该定义
        while(i<=10){
            sum2 = sum2 *i;
            i++;
        }
        System.out.println(sum2);
        System.out.println(i);
    }
}

while循环的第二种格式:do-while循环

基本格式:do{                                                扩展格式:do{

                循环体语句;                                                        循环体语句;

                }while(判断条件语句);                                        控制条件语句;

                                                                                          }while(判断条件语句)

while与do-while的区别:

while循环先进行判断条件,看是否是true,若是true,再执行循环体内容。

而do-while循环是先执行一次循环体内容,然后再去判断条件,看是否为true,若是true,则继续执行。

循环嵌套:

举例说明循环嵌套:打印3行4列的星星符号*

步骤:先打印一行四列的星星*,想使多个输出语句在同一行,需要使用Java的另一种输出方式:

System.out.print();输出不换行,此时再打印一行四列的星星

打印完之后,需要打印三行像这样的星星,因此在原来for循环基础上加上一个for循环形成循环嵌套,成功打印三行四列的星星,部分完整代码如下:

for(int j=1;ji<=4;j++){
    //打印一行四列的星星
    System.out.print("*\t");
}

//打印三行四列的星星
for(int i = 1;i<=3;i++){//此for循环控制行
    for(int j = 1;j<=4;j++){//此for循环控制列
        System.out.print("*\t");
    }
    System.out.println();
}

控制条件语句:Java提供三个关键字用于在需要在中途退出或者停止循环。

break:使用场景:用于switch语句中,在循环语句中,离开使用场景的存在无意义。

注意事项:break在单独的一个if语句中不可使用,但若是if语句外含有嵌套语句(如一个for循环内嵌套了一个if语句),则可以使用;单独的使用break无意义,也不允许使用。

for(int i = 1;i<11;i++){
    System.out.println(i);
    if(i==3){
        break;//该break的作用是结束整个循环
    }
}
/*
因此输出为:
1
2
*/

break在循环嵌套结构中单独使用时结束的是离它最近的那个循环,只会跳出(结束)单层循环。如果想要使break结束最外层(多层)循环,需要使用带标签的break。

//为外部循环与内部循环分别加上标签wc与nc
wc:for (int i = 1; i <= 9; i++) {
            nc:for (int j = 1; j <= i; j++) {
                if(j==4){
                    break wc; //单独使用的时候,结束的是离它最近的那个循环,就是跳出单层循环
                }
                System.out.print(i + "*" + j + "=" + (i * j) + "\t");
            }
            System.out.println();
//该语句输出为九九乘法表的第一到第四行

结束最外部循环时,只需要在break后加上外部循环的标签即可结束外部循环,即结束整个循环。

continue跳出当次循环,继续执行后面的循环,不可用于switch语句中

for(int i = 1;i<=5;i++){    //该输出为:
    if(i==3){               //1
    continue;               //2
    }                       //4
    System.out.println(i);  //5  

}

输出中没有3,因为当i等于3时,执行continue跳出了该次循环。

return:结束main方法,结束程序执行,正常情况下,return在方法中使用

for(int i=1;i<=10;i++){
            if(i==3){
               return; 
//结束main方法,结束程序执行,正常情况下,return在方法中使用,我们马上会说到
            }
            System.out.println(i);
        }

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验名称:Java 流程控制语句实验报告 实验目的:通过实验,掌握 Java 中的流程控制语句的使用方法并能够熟练地应用到实际编程中。 实验内容: 1. if-else 语句:根据条件判断执行不同的代码块。 2. switch-case 语句:根据不同的情况执行不同的代码块。 3. for 循环语句:重复执行一段代码块,直到满足条件为止。 4. while 循环语句:重复执行一段代码块,直到满足条件为止。 5. do-while 循环语句:先执行一次代码块,然后重复执行一段代码块,直到满足条件为止。 实验步骤: 1. if-else 语句实验:编写一个程序,根据用户输入的数字,判断其正负性。 ```java import java.util.Scanner; public class IfElseDemo { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入一个数字:"); int num = scanner.nextInt(); if (num > 0) { System.out.println(num + "是正数。"); } else if (num < 0) { System.out.println(num + "是负数。"); } else { System.out.println(num + "不是正数也不是负数。"); } } } ``` 2. switch-case 语句实验:编写一个程序,根据用户输入的数字,输出对应的星期几。 ```java import java.util.Scanner; public class SwitchCaseDemo { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入一个数字(1-7)代表星期几:"); int day = scanner.nextInt(); 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; } } } ``` 3. for 循环语句实验:编写一个程序,求 1~100 的和。 ```java public class ForDemo { public static void main(String[] args) { int sum = 0; for (int i = 1; i <= 100; i++) { sum += i; } System.out.println("1~100 的和是:" + sum); } } ``` 4. while 循环语句实验:编写一个程序,求 1~100 中的偶数和。 ```java public class WhileDemo { public static void main(String[] args) { int i = 1; int sum = 0; while (i <= 100) { if (i % 2 == 0) { sum += i; } i++; } System.out.println("1~100 中的偶数和是:" + sum); } } ``` 5. do-while 循环语句实验:编写一个程序,求 1~n 的阶乘。 ```java import java.util.Scanner; public class DoWhileDemo { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入一个正整数:"); int n = scanner.nextInt(); int i = 1; int result = 1; do { result *= i; i++; } while (i <= n); System.out.println(n + " 的阶乘是:" + result); } } ``` 实验结果: 运行以上程序,得到以下输出结果: 1. if-else 语句实验: ``` 请输入一个数字:-5 -5是负数。 ``` 2. switch-case 语句实验: ``` 请输入一个数字(1-7)代表星期几:3 星期三 ``` 3. for 循环语句实验: ``` 1~100 的和是:5050 ``` 4. while 循环语句实验: ``` 1~100 中的偶数和是:2550 ``` 5. do-while 循环语句实验: ``` 请输入一个正整数:5 5 的阶乘是:120 ``` 实验结论: 通过本次实验,我对 Java 中的流程控制语句有了更深入的了解。if-else 语句可以根据条件判断执行不同的代码块;switch-case 语句可以根据不同的情况执行不同的代码块;for 循环语句可以重复执行一段代码块,直到满足条件为止;while 循环语句可以重复执行一段代码块,直到满足条件为止;do-while 循环语句可以先执行一次代码块,然后重复执行一段代码块,直到满足条件为止。掌握这些流程控制语句的使用方法对于编写 Java 程序具有重要的意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值