【KuangStudy】Java流程控制学习

Java流程控制学习

用户交互Scanner

  • 通过Scanner类来获取用户的输入

  • 基本语法(固定)

    //开头:创建scanner对象,接收键盘输入
    Scanner scanner=new Scanner(System.in);
    
    //结尾:IO流需要及时关闭,防止占用资源
    scanner.close();
    
  • 通过Scanner类的next()或nextLine()方法获取输入的字符串

    String str1=scanner.next();//用next()方法读取键盘输入,赋值给字符串str1
    String str2=scanner.nextLine();//用nextLine()方法读取键盘输入,赋值给字符串str2
    
  • next()或nextLine()方法区别

    • next()方法一定要读取到有效字符输入后才可以结束输入

    • 对输入有效字符之前遇到的空白,next()方法会自动将其忽略、

    • next()方法一旦输入有效字符后,遇到的空格或回车会作为结束符(后面内容就截断了)

    • 因此next()方法不能得到带有空格的字符串


    • 以回车(\n)作为结束符,nextLine()方法返回的就是回车之前的所有字符

    • 因此nextLine()方法可以获得空白

  • 在读取前可以使用hasNext()与hasNextLine()判断是否还有输入的数据(详见While循环)

    if(scanner.hasNext()){
          String str=scanner.next();
          System.out.println("使用Next方法接收:"+str);
    }
    

Scanner进阶使用

可以使用hasNextInt()方法判断输入的是否是一个整数,以此类推其他方法……(详见if选择结构)

if(scanner.hasNextInt()) {
   int i=scanner.nextInt();
   System.out.println("输入的是整数:"+i);
}else{
   System.out.println("输入的不是整数");
}

例题:输入多个数值,计算其总和及平均值,每输入一个数字用回车确认,通过输入非数字来结束运算并输出计算结果

Scanner scanner=new Scanner(System.in);//创建scanner对象,接收键盘输入
double sum=0;//初始化sum计算总和
int n=0;//初始化n计算输入的数值个数
while(scanner.hasNextDouble()){//详见While循环,判断是否输入了数值,当输入非数字时结束while循环
     sum+= scanner.nextDouble();//sum=sum+scanner.nextDouble(),将输入数值与sum相加并将结果赋值给sum
     n++;//n自增,计算输入的数值个数
}
System.out.println("总和="+sum+"\n平均值="+sum/n);//输出总和及平均值,"\n"是转义字符,表示换行
scanner.close();//IO流需要及时关闭,防止占用资源

顺序结构

从上到下一行一行执行就是顺序结构……

If选择结构

语法:

if(/*布尔表达式1*/){
    //如果布尔表达式1为true将执行的语句
}else if(/*布尔表达式2*/){
    //如果布尔表达式2为true将执行的语句
}else if(/*布尔表达式3*/){
    //如果布尔表达式3为true将执行的语句
}else{
    //如果以上所有布尔表达式都为false将执行的语句
}

以上是最全的结构,使用时可以不写全,也可以嵌套

if(/*布尔表达式1*/){
    //如果布尔表达式1为true将执行的语句
    if(/*布尔表达式2*/){
    //如果布尔表达式1为true且布尔表达式2为true将执行的语句
    }
}

Switch多选择结构

  • switch case语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支
  • switch语句中的变量类型可以是:
    • byte、short、int或char
    • 从Java SE7 开始支持字符串String类型(每个对象都对应一个HashCode,可通过反编译来查看)
    • case标签必须为字符串常量或字面量
switch(变量){
        case1//语句
            break;
        case2//语句
            break;
        default:
            //语句
            break;

switch将变量与值进行匹配(每个值互不相等),当匹配到相等时进入case执行语句,若遇到break则跳出switch,执行switch后面的语句,若不遇到break则会一直执行后面case里的语句。default表示当所有case都不匹配时执行的语句,可不写default。注意:switch匹配不会按照从上到下的顺序,因此default不必须写在所有case之后(但不建议)。

While循环

while循环(先判断,后执行)

while(布尔表达式){
    //循环内容
}
  • 只要布尔表达式为true,循环就会一直执行下去
  • 大多数情况需要让循环停止下来,因此要考虑一个方法来让布尔表达式为false
  • 少数情况下需要循环一直执行,比如服务器的请求响应监听等
  • 循环条件一直为true会造成死循环,影响程序性能或者造成程序卡死崩溃

DoWhile循环

DoWhile循环(先执行,再判断)

do{
    //循环内容
}while(布尔表达式)

注意和while的区别

For循环

for循环语句

for(初始化条件;布尔表达式;更新){
    //代码语句
}
  • 初始化条件:开始执行for循环前执行的语句
  • 布尔表达式:和while相同
  • 更新:每次执行完代码语句后都要执行的语句
  • 初始化条件、布尔表达式、更新都可以不写,但分号必须写

打印九九乘法表

for(int i=1;i<=9;i++){
        for(int j=1;j<=i;j++){
            System.out.print(i+"*"+j+"="+i*j+"\t");
        }
        System.out.println();//效果等于System.out.print("\n");
    }
/*输出结果
1*1=1	
2*1=2	2*2=4	
3*1=3	3*2=6	3*3=9	
4*1=4	4*2=8	4*3=12	4*4=16	
5*1=5	5*2=10	5*3=15	5*4=20	5*5=25	
6*1=6	6*2=12	6*3=18	6*4=24	6*5=30	6*6=36	
7*1=7	7*2=14	7*3=21	7*4=28	7*5=35	7*6=42	7*7=49	
8*1=8	8*2=16	8*3=24	8*4=32	8*5=40	8*6=48	8*7=56	8*8=64	
9*1=9	9*2=18	9*3=27	9*4=36	9*5=45	9*6=54	9*7=63	9*8=72	9*9=81
*/

增强for循环(详见数组)

增强for循环

for(声明语句:表达式){
    //代码语句
}
  • 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配,其作用域自然也就限定在for循环语句块中,其值与对应的数组元素的值相等
  • 表达式:表达式是要访问的数组名,或者是返回值为数组的方法

break、continue、goto

  • break:用于强行退出当前循环或switch,执行循环下面的语句,注意:只可退出一层循环
  • continue:用于跳过当前循环语句中剩下未执行的语句,直接进入循环判断,注意:对于for循环无法跳过"更新"
  • goto:略

打印三角形及Debug

for (int i = 1; i <= 5; i++) {
        for (int j = 5; j>i; j--) {
            System.out.print(" ");
        }
        for (int j = 0; j < i; j++) {
            System.out.print("*");
        }
        for (int j = 1; j < i; j++) {
            System.out.print("*");
        }
        System.out.println();
    }
/*输出结果
    *
   ***
  *****
 *******
*********
*/

debug:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GgBiUbJL-1612595159707)(D:\课件\科创\截图\Debug.png)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值