Java流程控制

java流程控制

用户交互Scanner

scanner对象

  • 我们可以通过Scanner类来获取用户的输入

  • 基本语法:

    • Scanner scanner= new Scanner(System.in);
  • 通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hastNext()与hasNextLine判断是否还有输入的数据

next():

  1. 一定哟啊读取到有效字符后才可以结束输入

  2. 对输入有效字符之前遇到的空白,next()方法会自动将其去掉

  3. 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符

  4. next()不能得到带有空格的字符串

package scanner;
​
import java.util.Scanner;
​
public class Demo01 {
    public static void main(String[] args) {
        
        //创建一个扫描器对象,用于接收键盘数据
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("使用next方式接收:");
        //判断用户有没有输入字符串
        if (scanner.hasNext()) {
            //使用next方式接收
            String str = scanner.next();
            System.out.println("输入内容为:"+str);
            
        }
        
        scanner.close(); //凡是属于IO流的类如果不关闭会一直占用资源,要养成好习惯用完就关掉
    
    }
​
}
​

 

nextLine():

  1. 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符

  2. 可以获得空白

package scanner;
​
import java.util.Scanner;
​
public class Demo03 {
    public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    
    System.out.println("请输入数据:");
    
    String string = scanner.nextLine();
    
    System.out.println("输入的内容为:"+string);
        
    scanner.close();
    }
}
​

 

  • Next()的其他类型的示例

package scanner;
​
import java.util.Scanner;
​
public class Demo05 {
    public static void main(String[] args) {
        //我们可以输入多个数字,并求其总和和平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果
        Scanner scanner = new Scanner(System.in);
        
        //和
        double sum = 0;
        //计算输入了多少个数字
        int m = 0;
        //通过循环判断是否还有输入,并在里面对每一次进行求和和统计
        while (scanner.hasNextDouble()) {
            double x = scanner.nextDouble();
            
            m = m + 1;
            sum = sum + x;
            System.out.println("你输入了第"+m+"个数据,然后当前结果sum="+sum);
            
        
        }
        System.out.println(m +"个数的和为" + sum);
        System.out.println(m+ "个数的平均值是" + (sum/m));
        
        
        scanner.close();
    }
​
}
​

 

 

顺序结构

  • java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行

  • 最简单的算法结构

  • 语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构

选择结构*

if单选择结构

  • 语法:

if(布尔表达式){
    
}

 

 

if双选择结构

  • 有两个选择,如果跟选择一相同,则布尔表达式的值是true,执行花括号中的语句;如果跟第一个选择不一样,则布尔表达式的值为false,执行else中的语句

if(布尔表达式){
    //如果布尔表达式中的值为true,执行代码
}else{
    //如果布尔表达式的结果为flase,执行代码
}

 

  1. 代码示范

  • package struct;
    ​
    import java.util.Scanner;
    ​
    public class Demo002 {
        public static void main(String[] args) {
            Scanner scanner  = new Scanner(System.in);
            
            System.out.println("请输入成绩:");
            int score = scanner.nextInt();
            
            if (score>=60) {
                
                System.out.println("成绩合格!");
            }else {
                System.out.println("成绩不合格!");
            }
            
            scanner.close();
            
        }
    ​
    }
    ​

     

if多选择结构

  • 在else上添加新的if

    if(布尔表达式1){
        //如果布尔表达式1中的值为true,执行代码
    }else if(布尔表达式2){
        //如果布尔表达式2的结果为true,执行代码
    }elseif(布尔表达式3){
        //如果布尔表达式中3的值为true,执行代码
    }else{
        //如果以上布尔表达式的结果都为flase,执行代码
    }
    • 只要其中一个else if的语句检测为true,其他的else if 以及else语句都将跳过执行

嵌套的if结构

  • 使用嵌套的if…else语句是合法的,也就是说你可以在另一个if或者else if语句中使用if或者else if 语句。你可以向if语句一样嵌套else if……else

switch多选择结构

  • switch case 语句判断一个变量与一个系列中某个值是否相等,每个值称为一个分支

  • switch语句中的变量类型可以是:

    • byte、short、int或者char

    • 从java SE 7 开始

    • switch支持字符串String类型了

    • 同时case标签必须为字符串常量或字面量

package struct;
​
public class SwitchDemo01 {
    public static void main(String[] args) {
        //case穿透
        char grade = 'C';
        
        switch (grade) {
        case 'A': 
            System.out.println("优秀");
            break;//可选,每个case后必须加上break来结束循环
        case 'B':
            System.out.println("良好");
            break;
        case 'C':
            System.out.println("及格");
            break;
        case 'D':
            System.out.println("再接再厉");
            break;
        case 'E':
            System.out.println("挂科");
            break;
            default:
                System.out.println("未知等级");
            
        
        
        }
    }
​
}
​

 

 

循环结构*

  • Java5中引入了一种主要用于数组的增强型的for循环

while循环

  • while是最基本的循环,结构为

    • while(布尔表达式){
          //循环内容
      }
  • 只要布尔表达式为true,循环就会一直执行下去

  • 我们大多数情况下是会让循环停止下来的,我们需要一个让表达式失效的方式来结束循环

  • 少数情况需要循环一直执行,比如服务器的请求响应监听等

  • 循环条件一直为true就会造成无限循环【死循环】,我们正常的业务变成中尽量避免死循环,会影响程序性能或者在成程序卡死崩溃

package struct;
​
public class WhileDemo04 {
    public static void main(String[] args) {
        int i = 0;
        while(i<100) {
            i++;
            System.out.println(i);
        }
    }
​
}
​

 

do...while循环

  • 对于while语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次

  • do…while…循环和while循环相似,不同的是,do……while循环会至少执行一次

do{
    //代码语句
}while(布尔表达式)
  • while先判断后执行,do……while是先执行后判断!

  • do……while总是保持循环体会被至少执行一次

package struct;
​
public class DoWhileDemo02 {
    public static void main(String[] args) {
        int a = 0;
        while (a<0) {
            System.out.println(a);//无输出结果
            a++;
        }
        System.out.println("===============");
        do {
            System.out.println(a);//输出0
            a++;
        } while (a<0);
    }
}
​

 

for循环**

  • for循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环结构

  • for循环执行的次数是在执行前就确定的。格式:

    • for(初始化;布尔表达式;更新){
          //代码语句
      }
  • 9ec348800ef649d7be9500920df79b7f.png
  •  

 

  • 练习

package struct;
​
public class ForDemo01 {
    public static void main(String[] args) {
        //while循环和for循环输出1-100
        int a = 1;//初始化条件
        
        while(a<=100) {//条件判断
            System.out.println(a);//循环体
            a+=1;//迭代
            
        }
        
        System.out.println("while循环结束!");
        //初始化值//条件判断//迭代
        for(int i = 1;i<=100;i++) {
        System.out.println(i);  
        }
        System.out.println("for循环结束!");
    }
}
​

 

package struct;
​
public class ForDemo02 {
    public static void main(String[] args) {
        //练习:计算0~100之间的奇数和偶数之和
        int oddsum = 0;
        int evensum = 0;
        for(int i = 0;i<=100;i++) {
            if (i%2!=0) {//奇数
                oddsum+=i;
            }else {//偶数
                evensum+=i;
            }
        }
        System.out.println("奇数的和:"+oddsum);
        System.out.println("偶数的和:"+evensum);
    }
​
}
​

 

package struct;
​
public class ForDemo03 {
    public static void main(String[] args){
        //练习:用while或者for循环输出1-1000之间能被5整除的数,并且每行输出3个
        for(int i=0;i<=1000;i++) {
            if (i%5 == 0) {
                System.out.print(i+"\t");
            }
            if (i%(5*3)==0) {
                System.out.println();
            }
        }
        //println 输出完会换行
        //print 输出完不会换行
    }
​
}
​

 

package struct;
​
​
public class ForDemo04 {
    public static void main(String[] args) {
        //for循环输出99乘法表
        for(int i=1;i<10;i++){
            for(int j = 1;j<=i;j++) {//j<=i避免重复的问题
            System.out.print(j+"*"+i+"="+j*i+"\t");
            }
            System.out.println();
        }
        
    }
​
}
​

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值