Loading

零基础入门学习Java课堂笔记 ——day02

流程控制

1.Scanner对象

来源:java.util.Scanner 我们可以通过Scanner类来获取用户的输入输出

用户交互Scanner


通过new关键词创建Scanner对象

Scanner input = new Scanner(System.in);

通过Scanner类判断用户是否输入,如果输入则读入一个单词的长度

import java.util.Scanner;

public class demo1 {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);

        //判断用户是否输入
        if(input.hasNext()){
            String str = input.next();
            System.out.println(str);

        }

        //方式IO流使用完一定要关闭
        input.close();
    }
}

通过Scanner类判断用户是否输入,如果输入则读入一行的长度

import java.util.Scanner;

public class demo1 {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);

        //判断用户是否输入
        if(input.hasNextLine()){
            String str = input.nextLine();//获取一行
            System.out.println(str);

        }

        //方式IO流使用完一定要关闭
        input.close();
    }
}

进阶用法


当我们要求输入整数、浮点数、字符串的时候Scanner可以过滤掉一些不是我们想要的东西

import java.util.Scanner;

public class demo1{
    public static void main(String[] args){
		//创建Scanner对象
        Scanner input = new Scanner(System.in);
        int i = 0;
        float f = 0.0f;
		
        
        if(input.hasNextInt()){ //判断是否为整数
            i = input.nextInt();
            System.out.println("Int:"+i);
        }else if(input.hasNextFloat()){ //是否为浮点数
            f = input.nextFloat();
            System.out.println("Float:"+f);
        }else{ //都不是的话....
            System.out.println("Please write down float or int data.");
        }
        
        input.close();//关闭IO
    }
}
import sun.awt.geom.AreaOp;

import java.util.Scanner;

public class demo1{
    public static void main(String[] args){
        //利用while循环 实现输入N个数字
        // 计算总和以及平均数
        Scanner input = new Scanner(System.in);


        double total = 0.0;//存放总数的变量
        int cnt = 0;//计数器

        System.out.println("Please enter data:");
        while(input.hasNextDouble()){ //判断是否输入
            System.out.print("Please enter data:");
            double temp = input.nextDouble();
            cnt++; //计数器递增1
            total += temp; //计算总和
        }
        System.out.println("average:"+total/cnt);
        System.out.println("total:"+total);

        input.close(); //关闭IO
    }
}

2.顺序结构

Java的基本结构就是顺序结构,除非特别指明,否则按照顺序一句一句执行,任何一种算法都离不开这种基本算法结构!!!

image

3.选择结构

在很多时候程序需要判断一个东西是否可行,为了让程序具有分支能力,因此诞生了选择结构

if单选择结构


if(布尔表达式){
	//为true的时执行这里
}

//下面还是按照顺序结构执行


image

if双选着结构


if(布尔表达式){
	//为true的时执行这里
}else{
	//反之执行这里
}

//下面还是按照顺序结构执行

image

if多选择结构


if(布尔表达式1){
	//布尔表达式1 为true的时执行这里
}else if(布尔表达式2){
	//反之 布尔表达式2为true执行这里
}else if(布尔表达式3){
	//反之 布尔表达式3为true执行这里
}else{
	//反之 执行这里
}

//下面还是按照顺序结构执行

image

注意:只要一个if else为true那么就会直接跳过其他if else

switch多选择结构

switch(expression){
    case value1:
        //语句
        break;
    case value2:
        //语句
        break;
    default:
        //语句
}

判断switch括号内部的变量是否为各个value 然后对号入座执行下方的语句知道遇到break,如果都没有对应的value就执行default下方的语句 注:break和default可选

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

  • byte、short、int或者char
  • 从Java SE 7开始可以支持String类型
  • case标签必须表示字符串常量或者字面量

4.循环结构

while循环


如果布尔表达式为true就一直执行循环的内容 反之跳出循环

避免死循环

import sun.awt.geom.AreaOp;

import java.util.Scanner;

public class demo1{
    public static void main(String[] args){
		int i = 0;
        while(i<101){
            System.out.println(i);
            i++;
        }
    }
}
import sun.awt.geom.AreaOp;

import java.util.Scanner;

public class demo1{
    public static void main(String[] args){
        int sum = 0;
        int i = 0;
        while(i<101){
            sum = sum + i;
            i++;
        }
        System.out.println(sum);
    }
}

do...while循环


即使不满足条件也要让循环至少执行一次

import sun.awt.geom.AreaOp;

import java.util.Scanner;

public class demo1{
    public static void main(String[] args){
        int sum = 0;
        int i = 0;
        do{
            System.out.println("我知道条件不符合 但我还是循环了一次");
            i++;
        }while (i<-1);
        System.out.println("i是"+i);
    }
}

do..while先执行后判断 while先判断后执行

import sun.awt.geom.AreaOp;

import java.util.Scanner;

public class demo1{
    public static void main(String[] args){
        String str = "";
        int i = 2;
        while(i<0){
            System.out.println(i);
            str = "while";
        }
        
        do{
            System.out.println(i);
            str = "do while" + str;
        }while (i<-1);
        System.out.println(str);
    }
}

for循环


for循环会先对其设置好的变量就行初始化,然后判断是否符合条件如何符合条件就执行代码块,如果不符合条件就跳出循环,每次循环结束都会迭代

public class demo1{
    public static void main(String[] args){
        //for(初始化;条件判断;迭代)
        for(int i=1;i<10;i++){
            //代码块
            System.out.println(i);
        }
    }
}

for-each循环


主要是用来遍历数组和集合 的增强for循环

public class demo1{
    public static void main(String[] args){
        int[] number = {10,20,30,40,50};
        
        for(int item:number){
            System.out.println(item);
        }
    }
}

练习题


test1:计算0~100之间偶数和奇数和

test2:用while或者for循环输出1~1000之间能被5整除的数每行输出3个

test3:打印九九乘法表

import sun.awt.geom.AreaOp;

import java.util.Scanner;

public class demo1{

    //计算0到100之间的奇数和偶数的和
    static void test1(){

        int oddNumberTotal = 0; //奇数
        int evenNumberTotal = 0; //偶数

        for (int i = 0; i < 100; i++) {
            if(i%2 == 0){ //判断是否为偶数
                //System.out.println(i);
                evenNumberTotal+=i;
            }else{
                oddNumberTotal+=i;
            }
        }

        System.out.println("oddNumberTotal:"+oddNumberTotal);
        System.out.println("evenNumberTotal:"+evenNumberTotal);

    }

    //用while或for循环输出1~1000之间能被5整除的数 每行输出3个
    static void test2(){
        for (int i = 0,cnt = 0; i < 1000; i++) {
            if(i%5 == 0){ //判断是否为5的倍数
                System.out.print(i+"\t");
                cnt++; //打印个数递增
            }

            if(cnt == 3){ //当打印个数为3个时
                System.out.println(""); //打印换行符
                cnt = 0;//重置个数计数器
            }
        }
    }

    //打印九九乘法表
    /*
        1*1=1
        1*2=2   2*2=4
        1*3=3   2*3=6   3*3=9
    */
    static void test3(){
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                //没啥好说的 注意j小于等于i
                System.out.print(i+"*"+j+"="+i*j+"\t");
            }
            System.out.println("");
        }
    }

    public static void main(String[] args){
        System.out.println("======================>习题1");
        test1();
        System.out.println("======================>习题2");
        test2();
        System.out.println("======================>习题3");
        test3();
    }
}

5.break continue

break:可用于任何循环流程,主要作用是强制退出循环

public class demo1{
    public static void main(String[] args){

        for(int i=1;i<10;i++){
            //代码块
            System.out.println(i);
            if(i == 5){
                System.out.println("阎王让你三更走 绝不留你到五更");
                break;
            }
        }
    }
}

continue:用来终止某次循环,跳过未执行的语句,但相当于提前结束一次循环

public class demo1{
    public static void main(String[] args){

        for(int i=1;i<10;i++){
            //代码块
            if(i == 5){
                System.out.println("让你输出了?");
                continue;
            }
            System.out.println(i);
        }
    }
}
posted @ 2021-05-18 22:25  StarVik  阅读(55)  评论(0编辑  收藏  举报