廖雪峰Java教程学习笔记(二)——流程控制

(一)输入和输出

输出

System.out.println();//输出并换行
System.out.print();//输出后不换行

格式化输出

格式化输出使用System.out.printf(),通过使用占位符%?,printf()可以把后面的参数格式化成指定格式

占位符

%d  格式化输出整数

%x  格式化输出十六进制整数

%f   格式化输出浮点数

%e  格式化输出科学计数法表示的浮点数

%s  格式化字符串

由于%表示占位符,因此,连续两个%%表示一个%字符本身

//把一个整数格式化成十六进制,并用0补足8位
int n = 12345000;
System.out.printf("hex=%08x",n);

输入

首先创建Scanner对象并传入System.in,代表标准输入流,同样的,System.out代表标准输出流。

读取字符串使用scanner.nextLine();读取整数使用scanner.nextInt();等等。

Scanner scanner = new Scanner(System.in);//创建Scanner对象
System.out.print("input your name:");
String name = scanner.nextLine();//读取一行输入并获取字符串
System.out.print("input your age:");
int age = scanner.nextInt();//读取一行输入并获取整数

例如,输入上次考试成绩(int)和本次考试成绩(int),然后输出成绩提高的百分比,保留两位小数位

import java.util.Scanner;
public class Test{
    public static void main(String[] args)
    {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入上次考试成绩:");
        int grade1 = scanner.nextInt();
        System.out.print("请输入本次考试成绩:");
        int grade2 = scanner.nextInt();
        float percent = (float)(grade2 - grade1)/ grade1*100;
        System.out.printf("%.2f%%\n",percent);
    }
}

(二)if判断

if语句的基本语法是

if(条件){
    //条件满足时执行,可以是多条语句
}
else{
  //条件判断为false时,执行语句
}

else不是必须的,也可以使用多个if...else if串联。

使用多个if时,要特别注意判断顺序,同时还要注意边界条件。

判断引用类型相等

  • ==表示“引用是否相等”,是否指向同一个对象
  • equals()判断引用类型的变量内容是否相等

例如

if (s1.equals(s2)){
    System.out.println("s1 equals s2");
}

但如果变量s1为null,会报NullPointerException,为了避免此类错误,可以利用短路运算符&&

if (s1.equals(s2)){
    System.out.println("s1 equals s2");
}

练习:计算体制指数BMI,并打印结果

import java.util.Scanner;
public class Test{
    public static void main(String[] args)
    {
        Scanner scanner = new Scanner(System.in);
        System.out.print("身高:");
        float height = scanner.nextFloat();
        System.out.print("体重:");
        float weight = scanner.nextFloat();
        float BMI = weight/(height*height);
        if(BMI > 32)
        {
            System.out.print("非常肥胖");
        }
        else if(BMI > 28 && BMI <= 32)
        {
            System.out.print("肥胖");
        }
        else if(BMI > 25 && BMI <= 28)
        {
            System.out.print("过重");
        }
        else if(BMI > 18.5 && BMI <= 25)
        {
            System.out.print("正常");
        }
        else {
            System.out.print("过轻");
        }
    }
}

(三)switch多重选择

  • switch语句根据switch表达式计算的结果,跳转到匹配的case结果,然后继续执行后续语句,直到遇到break结束执行;
  • switch的计算结果必须是整型、字符串或枚举类型;
  • 不要漏写break和default。

练习:石头剪刀布游戏

import java.util.Scanner;
public class Test{
    public static void main(String[] args)
    {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入选项:");
        String option = scanner.nextLine();
        switch(option) {
        case "剪刀和石头":
            System.out.print("剪刀和石头,石头赢");
            break;
        case "剪刀和布":
            System.out.print("剪刀和布,剪刀赢");
            break;
        case "石头和布":
            System.out.print("石头和布,布赢");
            break;
        default:
            System.out.print("错误");
            break;
        }
    }
}

(四)while循环

while循环的基本用法是先判断循环条件再执行循环,条件满足时继续循环,条件不满足时退出循环。

while(条件表达式){
    循环语句
}

编写循环时要注意循环条件,并避免死循环。while可能一次循环都不执行。

(五)do while循环

do while循环的基本用法是,先执行循环,再判断条件,条件满足时继续循环,条件不满足时推出循环。

do{
   执行循环语句
}while(条件表达式);

do while至少会执行一次循环。

(六)for循环

for循环的用法是

for(初始条件;循环检测条件;循环后更新计数器){
    //执行语句
}

for循环还可以缺少初始化语句,循环条件和每次循环更新语句。

for each循环可以用来遍历数组,例如

public class Main {
    public static void main(String[] args) {
        int[] ns = { 1, 4, 9, 16, 25 };
        for (int n : ns) {
            System.out.println(n);
        }
    }
}

(七)break和continue

  • break语句可以跳出当前循环;
  • break语句通常配合if,在满足条件时提前结束整个循环;
  • break语句总是跳出最近的一层循环;
  • continue语句可以提前结束本次循环;
  • continue语句通常配合if,在满足条件时提前结束本次循环。
posted @ 2020-07-19 11:41  无度梦  阅读(247)  评论(0编辑  收藏  举报