分支结构语句

1.java.util.Scanner

  • 作用:可以从CMD窗口中接受一个数据自动为变量赋值,简化测试步骤。
  • 使用方法的代码如下:
// java.util.Scanner 使用步骤
// 1. 创建Scanner对象
java.util.Scanner sc = new java.util.Scanner(System.in);		
// 2. 根据数据的类型 选择 不同的方法接收不同的数据
// int a = sc.nextInt();		// 从控制台中接收一个int类型的数据
// double a = sc.nextDouble();  // 从控制台中接收一个double类型的数据
// String str = sc.next();	 
// char c = sc.next().charAt(0);
// 一个Scanner可以接收多个数据
int a = sc.nextInt();
int b = sc.nextInt();		
System.out.println("您输入的数据是:" +a +"\t"+ b );

注意事项:

  1. 使用sc.next…方法时,程序会暂停(阻塞)等待用户从控制台中输入数据并按下Enter键提交后方可继续执行。
  2. 务必保证接收的方法与输入的数据一致,否则提交数据后出现异常。

2.import

  • 作用:明确程序中类所处的位置,引入外部的程序包。
  • 不使用import明确类所处的位置:
java.util.Scanner;
java.util.List;
java.sql.Date;
java.util.concurrent.locks.Lock;

使用import语句,语法如下:

// 在package语句下,类以外的位置声明
import 包名.类名;
import 包名.*; // *表示所有类

import 包名.类名; 在程序中出现该类时编译器默认从指定包的位置查找该类。 import
包名.*;在程序中出现任意类时都从指定包中查找该类。

演示的代码如下:

// 明确类所在的位置
// 如果在此源文件中使用了Scanner 程序默认从java.util包中查找Scanner
// import java.util.Scanner;
// import java.util.List;
// import java.util.ArrayList;
// import java.util.*;
import java.util.*;
import java.io.File;
public class TestImport{	
	public static void main(String[]args){
		// 1. 创建Scanner对象
		// java.util.Scanenr sc = new java.util.Scanner(System.in);
		Scanner sc = new Scanner(System.in);
		// java.util.List list = new java.util.ArrayList();
		List list = new ArrayList();
		// java.io.File;
		File file;
		// 由于此程序使用List默认从util中查找,如果需要使用java.awt.List
        // 必须手动明确包名
		java.awt.List list2;
		// java.sql.Date;
		// java.util.concurrent.locks.Lock;
		
	}
}

Scanner使用步骤如下:

1. 引入java.util.Scanner
    import java.util.Scanner;
2. 创建Scanner对象
    Scanner sc = new Scanner(System.in);
3. 根据需求选择不同的接收方法

注意事项:

  1. import语句在package之下,一个程序中可以定义多个import
  2. 不允许出现 import java..;
  3. import java.util.* 可能会冲突问题 java.util.List
    java.awt.List
  4. 推荐使用import java.包名.类名:提高编译速度

3.if

  1. 概念:if语句可以根据某个条件控制程序的执行流程。
  2. 基本if结构
    语法:
    if( 布尔表达式 ){
        //当布尔表达式为true执行,否则不执行
    }
    
    演示的代码如下:
int a = 10;
// 如果a<100为true 执行{} 中的代码,执行完毕后跳出if结构继续向下执行其他代码
if( a  < 100 ){
	System.out.println("Hello");
}
System.out.println("程序结束!");

3.if–else结构
语法:

if( 布尔表达式 ){
    //当布尔表达式为true时执行
}else{
    //当布尔表达式为false时执行
}

演示的代码如下:

// 从控制台中接收两个整数,计算两个整数的商
// 1.创建Scanner
Scanner sc =  new Scanner(System.in);
System.out.println("请输入两个整数:");
// 2.选择接收数据的方法
int a = sc.nextInt();
int b = sc.nextInt();		
// 计算两个整数的商
// 如果b!=0时 执行a/b 否则 提示用除数不能为0!
if( b!=0 ){
	// b!=0 为 true 时执行
	System.out.println( a/b );
}else{
	// b!=0 为 false 时执行
	System.out.println("除数不能为0!");
}

4.if-elseif -else
主要用于多条件的筛选
语法:

if( 布尔表达式1 ){
    // 当布尔表达式1为true时执行
}else if(布尔表达式2){
 	// 当布尔表达式2为true时执行   
}else if(布尔表达式3){
    // 当布尔表达式3为true时执行
}...else{
    // 以上表达式均为false执行
}

演示的代码如下:

// 85以上 奖励奔驰一辆
// 70-84  奖励长安奔奔一辆
// 60-69	 奖励电驴一辆
// 低于60分 奖励富士康offer一个
import java.util.Scanner;
public class TestIf3{
	public static void main(String[] args){
		// 用户输入一个成绩,打印该成绩所对应的奖励
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个成绩:");
		int s = sc.nextInt();
		// 同样的数值根据不同的条件执行不同的代码
		// 85以上 奖励奔驰一辆
		if( s>=85 ){
			System.out.println("奖励奔驰一辆!");
		}else if( s>=70 && s<=84 ){
			// 70-84  奖励长安奔奔一辆
			System.out.println("奖励长安奔奔一辆!");
		}else if(s>=60 && s<=69){
			// 60-69	 奖励电驴一辆 
			System.out.println("奖励电驴一辆!");
		}else{
			// 低于60分 奖励富士康offer一个
			System.out.println("奖励富士康offer一个!");
		}	
	}
}
  1. 执行流程:
    程序执行时依次判断if--elseif中的条件是否满足,发现满足某个条件时执行{}中的代码随后跳出if--elseif结构,如果没有满足条件的if-elseif语句则执行最后的else{}。
    
    自然语言与代码之间的关系
    如果 怎么样 则做什么 			   ---> if(){}
    如果 怎么样 否则怎么样	  		  --->  if(){}else{}
    如果 怎么样 再如果怎么样...否则怎么样 ----> if(){}elseif(){}else{}
    
    关于if语句的补充
    当if语句中只有一行代码需要执行时{}号可以省略,适用于所有结构if/if--else/if--elseif-else
    if( a<b ) System.out.println();
    else if( a<c ) System.out.println();
    
    简写形式中的唯一一行代码不能用于定义变量。
    

4.switch

  1. 作用:适用于等值判断,根据变量不同的值执行不同的代码。
  2. 语法:
switch( 变量 ){
    case1:// 当变量的值与值1相等时执行;
    case2:// 当变量的值与值2相等时执行;
    case3:// 当变量的值与值3相等时执行;
    // ...
    default:// 当没有与变量匹配的值时执行;    
}
  1. 执行流程:
    当程序发现变量与某个值相同时执行case后面的代码,执行完毕后无论是否与后续case匹配向下继续执行其他代码直至最后一行代码执行完毕。(落空机制)
    
  2. break关键字:当程序遇到break关键字时跳出switch结构,通常情况switch配合break一起使用
    演示的代码如下:
import java.util.Scanner;
public class TestSwitch2{
    public static void main(String[]args){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入名次:");
        // 用户输入名次--打印名次的代称
        int n = sc.nextInt();
        // 1----冠军
        // 2----亚军
        // 3----季军
        // 4----殿军
        // 5~n--请继续努力	
        switch( n ){
            case 1 : 
                System.out.println("冠军");break;
            case 2 :
                System.out.println("亚军");break;
            case 3 :
                System.out.println("季军");break;
            case 4 :
                System.out.println("殿军");break;
            default:
                System.out.println("请继续努力!");
        }
    }
}

注意事项:

switch中的变量支持 byte、short、int、char。
JDK7 后 支持String。
JDK12 后> switch可以生成一个结果。
JDK13 后 可以在打印语句中打印switch语句生成的结果(预览版)。
JDK14 后 确认为最终版。

5 习题

  1. 以下对局部变量描述正确的是(B C)
    A. 局部变量定义之后,可以直接使用。
    B. 局部变量定义在函数以内。
    C. 作用范围:从定义开始,到定义它的代码块结束。
    D. 在同一个函数中,不允许定义同名的变量。
  2. 分析以下代码,哪些是合法的(A C)
    A. if(true){}
    B. int n; if(n%20){}
    C. int n=3;
    D. int n=2; if(n%3
    0) System.out.pintln(“n=”+n); if(n=2){}
    原因:B)没有对n变量初始化,局部变量必须赋值才能使用 D) =表示赋值 而if分支()中出现的应为布尔表达式。
  3. 关于导包的描述正确的是(C D)
    A. 一个源文件中只能有一条导包语句。
    B. 导包语句必须写在源文件中第一行有效语句。
    C. 导包的关键字为 import。
    D. 位于 java.lang 中的类无需导包,可直接使用。
    E. 一个源文件中必须有一条导包语句。
    原因:源文件中可以没有导包语句;当没有package语句时,import语句时有效第一行。
  4. 仔细阅读以下程序代码,分析并写出代码输出的结果。
    代码如下:
public class Test{
    public static void main(String[]args){
        int i = 15;
        if (i % 2 != 0){
            if (i % 3 == 0){
                System.out.println(i + "能被3整除!");
            }
            System.out.println("我不是偶数!");
        }else {
            if (i % 5 == 0){
                System.out.println(i + "能被5整除!");
            }
            System.out.println("我是偶数!");
        }
        System.out.println("我只是一个数据!");
    }
}

答:15能被3整除!
我不是偶数!
我只是一个数据!
5. 仔细阅读以下代码,分析并写出代码输出的结果。
代码如下:

public class Test{
    public static void main(String[]args) {
        int i = 3;
        switch (i){
            default:
                System.out.println("default");
            case 0:
                System.out.println("zero");
                break;
            case 1:
                System.out.println("one");
            case 2:
                System.out.println("two");
        }
    }
}

答:default
zero
6… 编程:从键盘读入一个数,判断它的正负。是正数,则输出"+",是负数,则输出"-"。
答:代码如下:

import java.util.Scanner;
public class Test{
    public static void main(String[]args) {
        System.out.println("请输入一个整数");
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        if (n >0){
            System.out.println("+");
        }
        if (n < 0){
            System.out.println("-");
        }
    }
}
  1. 编程:读入一个整数,表示一个人的年龄。如果小于 6 岁,则输出“儿童”,6 岁到 13 岁,输出“少 儿”;14 岁到 17 岁,输出“青少年”;18 岁到 35 岁,输出“青年”;36 岁到 50 岁,输出“中 年”;50 岁以上输出“中老年”。
    . 答:代码如下:
import java.util.Scanner;
public class Test{
    public static void main(String[]args) {
        System.out.println("请输入一个表示年龄的数!");
        Scanner sc = new Scanner(System.in);
        int age = sc.nextInt();
        if (age < 6){
            System.out.println("儿童");
        }else if (age >= 6 && age <= 13){
            System.out.println("少儿");
        }else if (age >= 14 && age <= 17){
            System.out.println("青少年");
        }
        else if (age >= 18 && age <=35){
            System.out.println("“青年");
        }
        else if (age >= 36 && age <= 50){
            System.out.println("中年");
        }else {
            System.out.println("中老年");
        }
    }
}
  1. 编程:读入一个整数,如果是 1~5 之间,则分别输出 5 个福娃的名字,否则输出“北京欢迎你”。
    答:代码如下:
import java.util.Scanner;
public class Test{
    public static void main(String[]args) {
        System.out.println("请输入一个表示年龄的数!");
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        switch(n) {
            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;
            default:
                System.out.println("北京欢迎你");
                break;
        }
    }
}
  1. 编程:读入一个表示年份的整数,判断这一年是否是闰年。如何判断一个年份 是否是闰年: I. 如果这个年份能够被 4 整除,且不能被 100 整除,则这一年是闰年。例如,1996 年是闰年, 而相应的,1993 年就不是闰年。 II. 如果这个年份能够被 100 整除,则这个数必须要能被 400 整除,才是闰年。例如,2000 年是 闰年,1900 年不是闰年。
    答:代码如下:
import java.util.Scanner;
public class Test{
    public static void main(String[]args) {
        System.out.println("请输入一个表示年份的整数:");
        Scanner s = new Scanner(System.in);
        int year = s.nextInt();
        if(year % 4 ==0 && year % 100 != 0){
            System.out.println( year + "是闰年");
        }else if(year % 100 == 0 && year% 400 == 0){
            System.out.println( year + "是闰年");
        }else{
            System.out.println( year + "不是闰年");
        }
    }
}
  1. 编程:某项查询执行之后,n 条结果,单页显示 m 条记录,第 i 页显示第几条到第几条。 例如: 共 n=11 条结果,单页显示 m=3 条 当 i = 1 时,显示第 1 条 到第 3 条 当 i= 2 时,显示第 4 条 到第 6 条。
    答:代码如下:
import java.util.Scanner;
public class Test{
    public static void main(String[]args) {
        System.out.println("请输入总共的条数:");
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        System.out.println("请输入每页显示的条数:");
        int m = s.nextInt();
        System.out.println("请输入需要显示的页数:");
        int i = s.nextInt();
        if(n%m==0){
            int a = ( i - 1) * m + 1;
            int b = i * m;
            System.out.println("当i = "+ i +" 时,显示第"+ a +"条 到第 "+ b +"条");
        }else{
            if( i< ( n / m + 1) ){
                int a = ( i - 1) * m + 1;
                int b = i * m;
                System.out.println("当i = " + i +" 时,显示第"+ a +"条 到第 "+ b +"条");
            }else{
                int a = ( i - 1) *m + 1;
                System.out.println("当i = "+ i +" 时,显示第"+ a +"条 到第 "+ n +"条");
            }
        }
    }
}

第二种代码如下:

import java.util.Scanner;
public class Test{
    public static void main(String[]args) {
        // 项查询执行之后,n条结果,单页显示m条记录,
        // 第i页显示第几条到第几条。
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入当前页码:");
        int i = sc.nextInt();   // 当前页码
        int n = 33;     // 总数据量
        int m = 5;      // 每页显示条数

        int begin = (i - 1) * m + 1; // 起始条数 = 上一页的结束条数(当前页码-1*每页显示条数) + 1
        int end = i * m;    // 结束条数 = 当前页码 * 每页显示条数
        // 最大页数:30 5 6  31 5 7
        // 如果n能够整除m n/m就是最大的页数,每页都能够完整的显示m条
        // 如果不能整除必须多+1一页,用来显示余下数据
        // 最大页数
        int maxPage = (n % m == 0 ? n / m : n / m + 1);
        // 如果页码是最后一页需要特殊处理
        if(i == maxPage) end = n;
		/*
				i=1		i=2		i=3		i=4		i=5		i=6		i=7
		begin	 1       6		 11		 16		 21		 26		 31

		end		 5       10		 15		 20		 25		 30		 n
		*/

        System.out.println("起始条数:"+ begin);
        System.out.println("结束条数:"+ end);

    }
}

11.编程:中国的个税计算方法: 应税所得为税前收入扣除 3500 元(起征点),然后超出部分,按照以下税率收税:
在这里插入图片描述
规则:应缴税款 = (税前工资 - 各类保险 - 3500) * 税率 - 速算扣除数。
注意:此处各类保险默认为 262 元;税前工资需大于等于 3500。 实发工资 = 税前工资 - 应缴税款 - 各类保险。
例如: 若税前工资为 15000,各类保险 262 元。
应缴税款(1804.5) = (15000 - 262 - 3500) * 0.25 - 1005
实发工资(12933.5) = 15000 - 1804.5 - 262
要求:读入一个整数,表示税前收入,输出应当缴纳的个人所得税和税后实际收入。
答:代码如下:

import java.util.Scanner;
public class Test{
    public static void main(String[]args) {
        System.out.println("请输入一个表示年份的整数:");
        Scanner s = new Scanner(System.in);
        double money = s.nextDouble();
        if(money > 3500){
            double m = money - 3500;   // 税前工资-3500;
             double n;    // 应缴税款
             double x;    // 实发工资
             if(m<=1500){
                 n = (m - 262) * 0.03;
                 x = money - n - 262;
                 System.out.println("税后工资" + x);
             }else if(m >= 1501 && m <= 4500){
                 n = (m - 262) * 0.1 - 105;
                 x = money - n - 262;
                 System.out.println("税后工资" + x);
             }else if(m >= 4501 && m <= 9000){
                 n = (m - 262) * 0.2 - 555;
                 x = money - n - 262;
                 System.out.println("税后工资" + x);
        }else if(m >= 9001 && m <= 35000){
                 n = (m - 262) * 0.25 - 1005;
                 x = money - n - 262;
                 System.out.println("税后工资" + x);
             }else if(m >= 35001 && m <= 55000){
                 n = (m - 262) * 0.3 - 2755;
                 x = money - n - 262;
                 System.out.println("税后工资" + x);
             }else if(m >= 55001 && m <= 80000){
                 n = (m - 262) * 0.35 - 5505;
                 x = money - n - 262;
                 System.out.println("税后工资" + x);
             }else{
                 n = ( m - 262) * 0.45 - 13505;
                 x = money - n - 262;
                 System.out.println("税后工资" + x);
             }
        }else{
            System.out.println("您无需交税");
        }
    }
}

6 总结

如图所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1. Scanner:可以从控制台中接收数据为变量赋值
   使用方式:
   1import java.util.Scanner 引入Scanner
   2Scanner sc  = new Scanner(System.in); 创建Scanner
   3、根据需要选择不同的next方法

2import:指引编译器找到类所处的位置(导包)
3if语句:根据不同的条件执行不同的代码,适用于区间判断
4switch:根据变量值执行不同的代码,适用于等值判断
5、局部变量的概念与特点
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学无止路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值