Java基础流程控制

Java基础流程控制

1. 用户交互Scanner

//基本语法

//创建一个扫描器对象,用于接收键盘输入数据
Scanner scanner = new Scanner(System.in)

scanner.hasNext()//判断是否还有输入数据
scanner.hasNextLine()//判断是否还有数据输入
scanner.next()//获取输入的字符串
scannernext()//获取输入的字符串    
  • next()

    1. 一定要读到有效字符后才可以结束输入。

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

    3. 只有输入有效字符后才将其后面输入的空白部分作为分隔符或者结束符。eg. hello world -->hello world

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

  • nextLine()

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

    2. 可以保留空白(空格)。

  • eg.计算多个数的总和和平均值

    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;
            double avg = 0;
            System.out.println("请输入一个数字:");
            while (scanner.hasNextDouble()){
                System.out.println("请输入一个数字:");
                sum += scanner.nextDouble();
                m++;
            }
            avg = sum / m;
            System.out.println(m + "个数的总和为:" + sum);
            System.out.println(m + "个数的平均数为:" + avg);
            scanner.close();
        }
    }
    

2. 顺序结构

程序一步一步按顺序往下执行。

3. 选择结构

  • if单选择结构

    package struct;
    import java.util.Scanner;
    public class demo01 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入内容:");
            String str = scanner.nextLine();
            if(str.equals("Hello World!")){
                System.out.println(str);
            }else{
                System.out.println("End");
            }
            scanner.close();
        }
    }
    
  • if双选择结构

    package struct;
    import java.util.Scanner;
    public class demo02 {
        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多选择结构

    package struct;
    import java.util.Scanner;
    public class demo03 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入成绩:");
            int score = scanner.nextInt();
            if(score>85 && score<=100){
                System.out.println("您的成绩等级为A");
            }else if(score>75 && score<=85){
                System.out.println("您的成绩等级为B");
            }else if(score>=60 && score<=75){
                System.out.println("您的成绩等级为C");
            }else if(score<60){
                System.out.println("您的成绩等级为D");
            }else{
                System.out.println("您的成绩等级不合法");
            }
            scanner.close();
        }
    }
    
  • if嵌套结构

    package struct;
    import java.util.Scanner;
    public class demo04 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入成绩:");
            int score = scanner.nextInt();
            if(score>85 ){
                if(score == 100){
                    System.out.println("您的成绩为满分");
                    return;
                }
                System.out.println("您的成绩等级为A");
            }
            scanner.close();
        }
    }
    
  • switch多选择结构

    package struct;
    import java.util.Scanner;
    public class demo05 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            char grade = 'A';
            switch (grade){
                case 'A':
                    System.out.println("优秀");
                    break;
                case 'B':
                    System.out.println("良好");
                    break;
                case 'C':
                    System.out.println("及格");
                    break;
                default:
                    System.out.println("不及格");
                    break;
            }
            scanner.close();
        }
    }
    

4. 循环结构

ps:要尽量避免死循环

  • while循环(先判断再执行)

    //输出1-100
    package struct;
    import java.util.Scanner;
    public class whileDemo01 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            int i = 0;
            while(i<100){
                i++;
                System.out.println(i);
            }
            scanner.close();
        }
    }
    
    //计算1+2+3+...+100的值
    package struct;
    import java.util.Scanner;
    public class whileDemo01 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            int i = 0;
            int sum = 0;
            while(i<100){
                i++;
                sum += i;
            }
            System.out.println(sum);
            scanner.close();
        }
    }
    
  • do…while(先执行后判断)

    package struct;
    import java.util.Scanner;
    public class doWhileDemo01 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            int i = 0;
            int sum = 0;
            do {
                i++;
                sum += i;
            }while(i<100);
            System.out.println(sum);
            scanner.close();
        }
    }
    
  • for循环

    package struct;
    import java.util.Scanner;
    public class forDemo01 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            int sum = 0;
            for(int i=0; i<=100; i++){
                sum+=i;
            }
            System.out.println("1+2+3+...+100="+sum);
            scanner.close();
        }
    }
    
    //练习1:计算1-100之间的奇数和与偶数和。
    package struct;
    import java.util.Scanner;
    public class OddSum_EvenSum {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            int odd_sum = 0;
            int even_sum = 0;
            for (int i = 0; i <= 100; i++) {
                if(i%2 == 0){
                    even_sum += i;
                }else {
                    odd_sum += i;
                }
            }
            System.out.println("even_sum="+even_sum+"\n"+"odd_sum="+odd_sum);
            scanner.close();
        }
    }
    
    //练习2:用while或者for循环输出1-1000之间能被5整除的数,并且每行输出3个
    
    package struct;
    import java.util.Scanner;
    public class DividedBy5 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            int i = 1;
            int num = 0;
            //while
            while(i<=1000){
                if(i % 5 == 0){
                    System.out.print(i+"\t");
                    num++;//通过计数器来实现每三个换一行
                }
                if (num == 3){
                    System.out.print("\n");
                    num = 0;
                }
                i++;
            }
    
            //for
            for (i=1; i<=1000; i++){
                if(i % 5 == 0){
                    System.out.print(i+"\t");
                }
                //通过第三个数是被15整除来实现每三个一行
                if (i%15 == 0){
                    System.out.print("\n");
                }
            }
             scanner.close();
        }
    }
    
    //练习3:输出九九乘法表
    /*
    1*1=1
    1*2=2	2*2=4
    1*3=3	2*3=6	3*3=9
    1*4=4	2*4=8	3*4=12	4*4=16
    1*5=5	2*5=10	3*5=15	4*5=20	5*5=25
    1*6=6	2*6=12	3*6=18	4*6=24	5*6=30	6*6=36
    1*7=7	2*7=14	3*7=21	4*7=28	5*7=35	6*7=42	7*7=49
    1*8=8	2*8=16	3*8=24	4*8=32	5*8=40	6*8=48	7*8=56	8*8=64
    1*9=9	2*9=18	3*9=27	4*9=36	5*9=45	6*9=54	7*9=63	8*9=72	9*9=81
    */
    package struct;
    import java.util.Scanner;
    public class Multiplication_table {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            for(int i=1; i<=9; i++){
                for(int j=1; j<=i; j++){
                    System.out.print(j+"*"+i+"="+(i*j)+"\t");
                }
                System.out.print("\n");
            }
              scanner.close();
    
        }
    }
    
    Ps:println()和print()之间的区别:
    	println():输出完会自动换行。
    	print():输出完不会自动换行。
    
    
    //数组的便利(for循环)
    package struct;
    import java.util.Scanner;
    public class demo06 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            int num[]={10,20,30,40,50,60};
            for(int i:num){// 遍历数组
                System.out.println(i);
            }
            scanner.close();
        }
    }
    

5.break和continue

//break(强制退出最近的当前的循环,不再继续接下来的循环)
package struct;
import java.util.Scanner;
public class breakDemo {
  public static void main(String[] args) {
      Scanner scanner = new Scanner(System.in);
      int i = 0;
      while(true){
          System.out.println(i);
          i++;
          if(i==30) break;
      }
      scanner.close();
  }
}
//break(强制退出本次循环,进入下一次循环)
package struct;
import java.util.Scanner;
public class continueDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int i = 0;
        while(i<100){
            i++;
            if(i%10 == 0){
                System.out.println();
                continue;
            }
            System.out.print(i+" ");
        }
        scanner.close();
    }
}

6.练习题

  • 打印三角形
/*
*                   floor   space   star
*       *             1       3       1
*      ***            2       2       3
*     *****           3       1       5
*    *******          4       0       7
*
*  数量关系: (1)每层层数累次递增
*            (2)每层空格数=总层数-当前层数
*            (3)每层星星数=2*当前层数-1
* */
package struct;
import java.util.Scanner;
public class triangle {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入打印三角形的层数:");
        int floor = scanner.nextInt();//输入层数
        int space = floor-1;//初始化空格数
        int star = 1 ;//初始化星星数

        //最外层循环控制层数(回车换行)
        for(int i =1 ;i<=floor;i++){
            //第二层有两个循环,分别控制打印空格数和星星数。

            //第二层第一个循环是控制空格数,每层空格数=总层数-当前层数。
            for(int j = 1; j<=floor-i;j++){
                System.out.print(" ");
            }
            //第二层第二个循环是控制星星数,每层星星数是= 2*当前层数-1.
            for(int k =1; k<=2*i-1;k++){
                System.out.print("*");
            }
            System.out.print("\n");
        }
        scanner.close();
    }
}

你可能感兴趣的:(java,开发语言)