Java基础04--流程控制01

流程控制1

Scanner—从键盘获取数据

如何从键盘获取不同类型的变量:需要使用Scanner类

具体实现步骤:
1.导包:import java.util.Scanner;
2.Scanner的实例化:Scanner scan = new Scanner(System.in);
3.调用Scanner类的相关方法,来获取指定类型的变量
如:nextInt() 、next() 、nextDouble() 、nextBoolean() …
这方面可以去看官方的API文档(虽然我自己也看不太懂…)

示例代码:

import java.util.Scanner;

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

		Scanner scan = new 	Scanner(System.in);

		System.out.println("请输入你的姓名: ");
		String name = scan.next();
		System.out.println(name);

		System.out.println("请输入你的年龄: ");
		int age = scan.nextInt();

		System.out.println(age);


		System.out.println("请输入你的体重: ");
		double weight = scan.nextDouble();

		System.out.println(weight);

		System.out.println("你是否相中了我呢?(true/false) ");
		boolean isLove = scan.nextBoolean();

		System.out.println(isLove);

		//对于char型的的获取,Scanner没有提供相关的方法。只能获取一个字符串
		System.out.println("请输入你的性别:(男/女) ");
		String gender = scan.next();//"男"
		char genderChar = gender.charAt(0);//获取索引为0位置上的字符

		System.out.println(genderChar);

	}
}

分支结构

if-else结构(条件判断结构)

格式:

第一种::

if(条件表达式){
	执行表达式
}

第二种:(二选一)

结果的符号与被模数的符号相同;
开发中,经常使用%来判断能否被除尽的情况。

if(条件表达式){
	执行表达式1
}else{
	执行表达式2
}

第三种:(N选一)

if(条件表达式){
	执行表达式1
}else if(条件表达式){
	执行表达式2
}else if(条件表达式){
	执行表达式3
}else if(条件表达式){
	执行表达式4
}
......
else{
	执行表达式n
}

说明:
1.else的结构是可选的。
2.针对于条件表达式:
>如果多个条件表达式是互斥的(没有交集)
那个判断和执行语句在上面,无所谓。
>如果多个条件表达式不是互斥的(有交集)
需要根据实际情况,考虑判断那个判断和执行语句在上面。
>如果多个条件表达式有包含关系
通常情况下,需要将范围小的放在范围大的上面,否则范围小的就没有机会执行了。
3.if-else结构可以嵌套使用
4.当if-else 执行语句只有一行时,所在的那一对{}可以省略,但不建议这么做

练习1:
岳小鹏参加Java考试,他和父亲岳不群达成承诺:
如果:
成绩为100分时,奖励一辆BMW;
成绩为(80,99]时,奖励一台iphone xs max;
当成绩为[60,80]时,奖励一个 iPad;
其它时,什么奖励也没有。
请从键盘输入岳小鹏的期末成绩,并加以判断

//1.导包:import java.util.Scanner;
import java.util.Scanner;

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

		//2.Scanner的实例化:Scanner scan = new 	Scanner(System.in);
		Scanner scan = new Scanner(System.in);

		System.out.println("请输入岳小鹏考试成绩:(0-100)");
		//3.调用Scanner类的相关方法,来获取指定类型的变量
		int grade = scan.nextInt();

		if(grade == 100){
			System.out.println("奖励一辆BMW");
		}else if (grade > 80 && grade <= 99)
		{
			System.out.println("奖励一台iphone xs max");
		}else if (grade >= 60 && grade <= 80)
		{
			System.out.println("奖励一个 iPad");
		}
	}
}

练习2:
由键盘输入三个整数分别存入变量num1、num2、num3,
对它们进行排序(使用 if-else if-else),并且从小到大输出。

import java.util.Scanner;
class IfTest2 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		System.out.println("请输入第一个整数");
		int num1 = scan.nextInt();

		System.out.println("请输入第二个整数");
		int num2 = scan.nextInt();

		System.out.println("请输入第三个整数");
		int num3 = scan.nextInt();

		if (num1 >= num2){
			if (num3 >= num1){
				System.out.println(num2+","+num1+","+num3);
			}else if (num3 <= num2){
				System.out.println(num3+","+num2+","+num1);
			}else {
				System.out.println(num2+","+num3+","+num1);
			}
		}else{
			if (num3 >= num2){
				System.out.println(num1+","+num2+","+num3);
			}else if (num3 <= num1){
				System.out.println(num3+","+num1+","+num2);
			}else {
				System.out.println(num1+","+num3+","+num2);
			}
		}
	}
}

switch-case结构

格式:

switch(表达式){

case 常量1:
	执行语句1;
	//break;
case 常量2:
	执行语句2;
	//break;

......

defalut:
	执行语句n;
	//break
}

说明:
1 :根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中,调用其执行语句。当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或switch-case结构结束为止。
2 :break 关键字。可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构
3 :switch结构中的表达式,只能是如下的六种数据类型之一:
byte 、 short 、 char 、 int 、 枚举类型(JDK5.0新增) 、 String类型(JDK7.0新增)
4 :case之后只能跟一个常量,不能跟一个范围。
5 :break关键字是可选的。
6 :default:相当于if-else结构中的else,default结构是可选的,位置是灵活的,不固定的,但一般都会放在末尾。
7 :如果case的执行语句一样的话,可以考虑合并

示例代码:

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

		int num = 1;
		switch(num){
		
		case 0:
			System.out.println("0");
			break;
		case 1:
			System.out.println("1");
			break;
		case 3:
			System.out.println("3");
			break;
		case 4:
			System.out.println("4");
			break;
		default:
			System.out.println("other");
			break;
		}
		
	}
}

练习1:
从键盘上输入2019年的“month”和“day”,要求通过程序
输出输入的日期为2019年的第几天。

import java.util.Scanner;
class  SwitchCaseTest1{
	public static void main(String[] args) {
		
		Scanner scan = new Scanner(System.in);

		System.out.println("请输入2019年的month:");
		int month = scan.nextInt();
		System.out.println("请输入2019年的day:");
		int day = scan.nextInt();

		//定义一个变量来保存总天数
		int sumDay = 0;

		switch(month){
		case 12:
			sumDay += 30;
		case 11:
			sumDay += 31;
		case 10:
			sumDay += 30;
		case 9:
			sumDay += 31;
		case 8:
			sumDay += 31;
		case 7:
			sumDay += 30;
		case 6:
			sumDay += 31;
		case 5:
			sumDay += 30;
		case 4:
			sumDay += 31;
		case 3:
			sumDay += 28;
		case 2:
			sumDay += 31;
		case 1:
			sumDay += day;
			//break;
		}
		
		System.out.println("2019年的"+month+"月"+day+"日是当年的第"+sumDay+"天。");
	}
}

练习2: 练习1加强版
从键盘分别输入年、月、日,判断这一天是当年的第几天
注:判断一年是否是闰年的标准:
1)可以被4整除,但不可被100整除

2)可以被400整除

import java.util.Scanner;
class  SwitchCaseExer{
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);

		System.out.println("请输入year:");
		int year = scan.nextInt();
		System.out.println("请输入month:");
		int month = scan.nextInt();
		System.out.println("请输入day:");
		int day = scan.nextInt();

		//定义一个变量来保存总天数
		//int sumDay;//编译不通过,错误: 可能尚未初始化变量sumDay
		int sumDay = 0;

		switch(month){
		case 12:
			sumDay += 30;
		case 11:
			sumDay += 31;
		case 10:
			sumDay += 30;
		case 9:
			sumDay += 31;
		case 8:
			sumDay += 31;
		case 7:
			sumDay += 30;
		case 6:
			sumDay += 31;
		case 5:
			sumDay += 30;
		case 4:
			sumDay += 31;
		case 3:
			//sumDay += 28;
			//判断year是否是闰年
			if((year % 4 == 0 && year % 100 !=0 ) || year % 400 == 0){
				sumDay += 29;
			}else{
				sumDay += 28;
			}

		case 2:
			sumDay += 31;
		case 1:
			sumDay += day;
			//break;
		}
		
		System.out.println(year + "年的"+month+"月"+day+"日是当年的第"+sumDay+"天。");
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值