Java教程

Java流程控制——基础阶段

本文主要是介绍Java流程控制——基础阶段,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Java流程控制——基础阶段

1. 用户交互Scanner

1.1 Scanner对象

  • 之前的基本语法没有实现程序和人的交互,但Java给我们提供了一个工具类Scanner可以用来获取用户的输入。java.util.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户的输入

  • 基本语法

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

  • next()

    • 一定要读取到有效字符后才可以结束输入
    • 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
    • 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
    • next()不能得到带有空格的字符串
  • nextline()

    • 以Enter为结束符,也就是说,nextline()方法返回的是输入回车之前的所有字符
    • 可以获得空白
\\next()应用
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()){
            //接受用户的输入
            String str = scanner.next();
            System.out.println("输出的内容为:"+str);
        }
        //凡是属于IO流的类如果不关闭就会一直占用资源,要养成好习惯用完就关掉
        scanner.close();
    }
}
\\nextline()应用
import java.util.Scanner;

public class Demo02 {
    public static void main(String[] args) {
        // 从键盘接受数据
        Scanner scanner = new Scanner(System.in);

        System.out.println("使用NextLine方式接收:");

        // 判断是否还有输入
        if (scanner.hasNextLine()){
            String str = scanner.nextLine();
            System.out.println("输出内容为:"+str);
        }
        scanner.close();
    }
}
// 实例
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();
//            System.out.println("你输入了第"+m+"个数据,当前结果sum="+sum);
            m++;
            sum = x+sum;// sum+=x;
            System.out.println("你输入了第"+m+"个数据,当前结果sum="+sum);
        }
        System.out.println(m+"个数的总和为:"+sum);
        System.out.println(m+"个数的平均值为:"+sum/m);

        scanner.close();
    }
}

2. 顺序结构

  • Java的基本结构就是顺序结构,除非特别指明,否则就是按照顺序操作
  • 顺序结构是最简单的算法结构
  • 语句与语句之间,框与框之间都是按从上到下顺序进行的,它是有若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的基本结构。

3. 选择结构

  • if单选结构

    • 语法:

      if(布尔表达式){
          // 如果布尔表达式为true执行的语句
      }
      
  • if双选结构

    • if ...else
  • if多选择结构

    if(){
        
    }else if(){
        
    }else if(){
        
    }else {
        
    }
    
  • 嵌套的if结构

    • 可以在if...else语句中嵌套使用else...if
  • switch多选择结构

    • switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支
    • switch 语句中的变量类型可以是:
      • byte、short、int或者char
      • 支持String类型
      • 同时case标签必须为字符串常量或字面量

4. 循环结构

  • while循环

    • 最基本的循环,它的结构为

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

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

    • 少部分情况下需要程序一直执行,如服务器的请求响应

  • do...while循环

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

    • 而do...while 循环与while最大的不同就是至少执行一次

    • while与do...while区别:

      • while先判断后执行,do...while先执行后判断
      • do...while总是保证循环体能至少执行一次
      do{
          //代码语句
      }while(布尔表达式)
      
  • for循环

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

    • for循环的执行次数是在执行前确定的,语法格式如下:

      for(初始化;布尔表达式;更新){
          //代码语句
      }
      
    • //100.for可以在IDEA中快捷输入for循环
      
  • 在Java5中引入了一种主要用于数组的增强型for循环

    • 先了解,后面再仔细学习

    • 用于循环数组和集合的

    • 语法格式:

      for(声明语句:表达式){
          //代码语句
      }
      
      public class ForDemo05 {
          public static void main(String[] args) {
              int [] numbers = {10, 20, 30, 40, 50}; //定义了一个数组
      
              for (int i = 0; i < 5; i++) {
                  System.out.println(numbers[i]);
              }
              System.out.println("================");
              //遍历数组的元素
              for (int x:numbers){
                  System.out.println(x);
              }
          }
      }
      

5. break&continue

  • // break在任何循环语句的主体部分,均可用break控制循环的流程
    //   break用于强行退出循环,不执行循环中剩余的语句(也在switch中使用)
    //
    // continue 语句在循环语句体中,用于种植某次循环过程,即跳过循环体中尚未执行的语句。接着进行下一次是否执行循环的判定
    
  • 关于goto关键字

    • goto是Java保留字,但未在语言中得到正式使用

6. 练习

public class TestDemo {
    public static void main(String[] args) {
        //打印三角形 5行
        for (int i = 1; i <= 5; i++) {
            for (int j=5; j>=i;j--){
                System.out.print(" ");
            }
            for (int j=1; j<=i;j++){
                System.out.print("*");
            }
            for (int j=2; j<=i;j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
  • Debug技巧:先在程序某行点击断点,然后debug,接着可以选择step into按钮继续一行一行执行程序,观察程序结构在console中的变化
这篇关于Java流程控制——基础阶段的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!