Java 学习笔记(四)流程控制

键盘输入与输出

输入

在 Java 中可以使用 java.util.Scanner 类实现从键盘获取数据

Scanner 类是 Java预先定义好的,放在 java.util 包中,我们直接使用即可,使用方法:

  1. 在类定义前面先使用 import 导入该类
  2. 创建 Scanner 对象,例如:
    • Scanner input = new Scanner(System.in);
  3. 调用 Scanner 对象的方法从键盘上读取数据
    • input.next()获取键盘输入的字符串
    • input.nextInt()获取键盘输入的整数
    • input.nextDouble()获取键盘输入的小数
    • input.nextBoolean()获取键盘输入的布尔值
    • 不能从键盘获取 char 类型的字符
/**
    使用 java.util.Scanner 从键盘读取数据
*/

// 第一步导入 Scanner 类
import java.util.Scanner;

class Example01{
    public static void main(Sring[] args){
        // 第二步创建 Scanner 的对象
        // 使用 new 创建类的对象
        // Scanner input 表示 input 这个变量是 Scanner 类型的
        // System.in 表示系统的标准输入,System.out 表示系统的标准输出
        Scanner input = new Scanner(System.in);
        // 一般情况下,会给用户一个请输入的提示
        System.out.println("请输入一个整数");
        // 第三步获取用户输入
        // 获取用户输入的整数,并保存到 num 变量中
        int num = input.nextInt();
    }
}

输出

  1. 打印并换行
    • System.out.println()
  2. 打印不换行
    • System.out.print()
    class Example02{
        public static void main(String[] args){
            String name = "answer";
            int age = 18;
            boolean isMan = True;

            // 打印字面量
            System.out.println("Hello World");
            System.out.println(123);
            // 打印变量的值
            System.out.println(name);
            System.out.println(age);
            System.out.println(isMan);
            // 打印表达式的值
            System.out.println(1 + 1);
            System.out.println(age + 1);
            // 字符串拼接
            System.out.println("name" + name);
            System.out.println("性别男:" + isMan);
            System.out.println("年龄" + age)
            // 输出结果:年龄181
            System.out.println("年龄" + age + 1)
            // 输出结果:19年龄
            System.out.println(age + 1 + "年龄")
        }
}

流程控制

计算机的程序执行顺序有三种结构:

  1. 顺序结构:从上向下逐条执行语句
  2. 选择结构:根据条件是否成立,选择执行不同的分支
  3. 循环结构:重复执行某段代码

选择结构

选择结构的语句有 ifswitch 语句

if 语句
image
/**
if 语句
*/

import java.util.Scanner;

class Example01{
    // 判断输入的数字是不是正整数
    public static void main(String[] args){
        System.out.println("请输出一个整数");
        Scanner input = new Scanner(System.in);
        int num = input.nextInt();

        if(num > 0){
            System.out.println(num + "是正整数");
        }
    }
}
if ...else 语句
image
/**
    if...else 语句
*/

import java.util.Scanner;

class Example02{
    // 判断输入的整数是奇数还是偶数
    public static void main(String[] args){
        System.out.println("请输入一个整数");
        Scanner input = new Scanner(System.in);
        int num = input.nextInt();

        // 如果 num 可以被 2 整除,是偶数,否则,是奇数
        if(num % 2 == 0){
            System.out.println(num + "是偶数");
        }else{
            System.out.println(num + "是奇数");
        }
    }
}
多分支 if 语句
image
/**
    多分支 if 语句
*/

import java.util.Scanner;

class Example03{
    // 判断输入的是正整数,负数,还是 0
    public static void main(String[] args){
        System.out.println("请输入一个整数");
        Scanner input = new Scanner(System.in);
        int num = input.nextInt();

        if(num > 0){
            System.out.println(num + "是正数");
        }else if(num < 0){
            System.out.println(num + "是负数");
        }else{
            System.out.println(num + "是零");
        }
    }
}
switch 语句

switch 也是一种多分支语句,语法:

switch(条件表达式){
        case 常量1:
            代码块1;
            break;
        case 常量2:
            代码块2;
            break;
        default:
            代码块3;
    }
  1. 条件表达式可以是int, short, byte, String 或者枚举类型,double,long 等类型不能做为 switch 的条件表达式
  2. 常量值不能重复
  3. 如果所有的常量值都不匹配条件表达式,则执行 default代码块
  4. break 用于跳出 switch 语句
  5. case 没有先后顺序
/**
switch语句
*/
import java.util.Scanner;

class Example04{
    public static void main(Sting[] args){
        // 根据输入的数字判断是星期几
        Scanner.out.println("请输入一个1~7范围内的正整数");
        Scanner input = new Scanner(System.in);
        int num = input.nextInt();

        switch(num){
            case 1:
                System.out.println("星期一");
                break;
            case 2:
                System.out.println("星期二");
                break;
            case 3:
                System.out.println("星期三");
                break;
            case 4:
                System.out.println("星期四");
                break;
            case 5:
                System.out.println("星期五");
                break;
            case 6:
                System.out.println("星期六");
                break;
            case 7:
                System.out.println("星期日");
                break;
            defaulf:
                System.out.println("你输入的数字不符合要求");
                break;
        }
        
    }
}

循环结构

循环就是重复的执行某一段代码,主要确定两点:

  1. 重复执行的代码
  2. 重复执行的条件

循环语句有 while 循环,do...while 循环,for 循环

while 语句
image
class Example01{
    public static void main(Sting[] args){
        // 打印10行"我是 while"
        int rows = 0;
        while(rows < 10){
            System.out.println("我是 while");
            rows++;
        }
    }
}
/*
    计算 1+2+3...100 的和
*/

class Example02{
    public static void main(String[] args){
        int sum = 0;
        int x = 1;
        while(x <= 100){
            sum += x;
            x++;
        }
        System.out.println("sum = " + sum);
    }
}
/*
    统计1~100范围内,有多少可以被7整除的数
*/

class Example03{
    public static void main(String[] args){
            int num = 1;
            int count = 0;
            while(num <= 100){
                if(num % 7 == 0){
                    count++;
                }
                num++;
            }
            System.out.print("1~100范围内可以被7整除的数有" + count + "个");
        }
}
/*
    猜数
    1 生成一个1~100范围内的随机整数
    2 提示用户输入一个猜测的数字
         如果输入的数字比随机数字大,提示大了
         如果输入的数字比随机数字小,提示小了
         如果相等,提示猜中了
    3 统计用户猜测的次数
*/

import java.util.Scanner;

class Example04{
    public static void main(String[] args){
        // 1. 生成一个1~100范围内的随机整数
        // Math.random() 方法返回一个0~1范围内的随机小数
        int dest = (int)(Math.random * 100);
        Scanner input = new Scanner(System.in);
        // 统计用户猜测的次数
        int count = 0;
        System.out.println("请输入你猜测的数字");
        int num = input nextInt();
        // 每次输入,计数器就加1
        count++;
        
        while(num != dest){
            if(num > dest){
                System.out.println("大了,请重新输入");
            }else if(num < dest){
                System.out.println("小了,请重新输入");
            }
            // 重新输入的数字赋值给 num
            num = input.nextInt();
            // 每次重新输入,计数器就加1
            count++;
        }
        // 循环结束,说明 dest == num 即猜中了
        System.out.println("恭喜你,猜中了,共猜了" + count + "次");
    }
}
do...while 语句
image
class Example05{
    public static void main(String[] args){
        // 1. 打印10行字符串
        int count = 0;
        do{
            System.out.println("Hello world");
            count++;
        }while(count < 10);
        
        // 2. 累加 1+2+3...100
        int num = 1;
        int sum = 0;
        do{
            sum += num;
            num++;
        }while(num <= 100);
        System.out.println("sum = " + sum);
    }
}
/*
    与 while 的区别:
    如果循环条件不成立
    do...while 至少执行一次循环
    while 一次循环都不会执行
*/

class Example05{
    public static void main(String[] args){
        int num = 10;
        // 循环条件不成立, while 一次也不执行
        while(num < 0){
            System.out.println(num);
            num++;
        }

        // 循环条件不成立,do...while 执行一次
        do{
            System.out.println(num);
            num++;
        }while(num < 0);
    }
}
for 语句
image
for(初始化表达式;循环条件表达式;循环体后表达式){
    循环体
}

执行过程:

  1. 执行初始化表达式
  2. 判断循环条件
  3. 如果条件成立,执行循环体,执行循环体后表达式
  4. 重复2,3步,当循环条件不成立时结束循环

一般情况下,当循环次数确定时使用 for 循环,循环次数不确定时使用 while 循环

public class Example06 {
    public static void main(String[] args){
        // 1.打印10次hello world
        for(int i = 1; i <= 10; i++){
            System.out.println("Hello World" + i);
        }

        // 2.计算 1+2+3...100 的和
        int sum = 0;
        for(int i = 1; i <= 100; i++){
            sum += i;
        }
        System.out.println("sum=" + sum);

        // 3.输出1~100之间能被7整除的数
        for(int i = 1; i <= 100; i++){
            if(i % 7 == 0){
                System.out.print(i + " ");
            }
        }
    }
}
/**
    循环嵌套
    根据输入的行数和个数打印星号
 */

 import java.util.Scanner;

public class Example07 {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.println("请输入行数");
        int rows = input.nextInt();
        System.out.println("请输入个数");
        int num = input.nextInt();

        // 外层循环控制行数
        for(int x = 1; x <= rows; x++){
            // 内层循环控制个数
            for(int i = 1; i <= num; i++){
                System.out.print("*");
            }
            System.out.println();
        }
        input.close();
    }
}
/**
    打印以下图形
    *
    **
    ***
    ****
    *****
    ******
 */

import java.util.Scanner;

public class Example08 {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.println("请输入行数");
        int num = input.nextInt();

        for(int i = 1; i <= num; i++){
            for(int x = 1; x <= i; x++){
                System.out.print("*");
            }
        System.out.println();
        }
        input.close();
    }
}
结束循环
  • continue 结束本次循环,继续下次循环

  • break 跳出循环结构

/*
 continue 结束本次循环,继续下一次循环
*/

public class Example09{
    public static void main(String[] args){
        // 打印1~100范围内可以被7整除的数
        num = 0;
        while(num <= 100){
            num ++;
            if(num % 7 != 0){
                // 如果不能被7整除就结束本次循环,再去判断循环条件
                continue;
            }
            System.out.print(num + " ")
        }
    }
}
/*
    break 结束循环
*/
import java.util.Scanner;

class Example10{
    public static void main(String[] args){
        int dest = (int)(Math.random() * 100);
        Scanner input = new Scanner(System.in);
        int count = 0;
        int num = -1;
        // 循环条件一致成立
        while(true){
            System.out.println("请输入你猜测的数字");
            num = input.nextInt();
            count++
            if(num > dest){
                System.out.println("大了");
            }else{
                System.out.println("小了");
            }else{
                System.out.println("恭喜你,猜中了,共猜了" + count + "次");
                // 结束循环
                break;
            }
        }
    }
}
/*
    for 循环中的 break , continue
 */
public class Example11{
    public static void main(String[] args){
        // 1.计算两个整数的最大公约数
        int m = 20;
        int n = 30;
        for(int i = m > n ? n : m; i >= 1; i--){
            if(m % i == 0 && n % i == 0){
                System.out.println(m + "与" + n + "的最大公约数是" + i);
                // 跳出整个循环
                break;
            }
        }

        // 2. 打印1~100之间能被7整除的数
        for(int i = 1; i <= 100; i++){
            if(i % 7 != 0){
                // 结束本次循环体,去执行表达式3
                continue;
            }
            System.out.print(i + " ");
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343