IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 03-流程控制(Java基础) -> 正文阅读

[移动开发]03-流程控制(Java基础)

感谢你的路过,希望学生的笔记能给你一点微不足道的参考(3/100)
Java基础思维导图,完整Java体系的链接
在这里插入图片描述

一,API

1.1什么是API,我们要学到什么程度?

??? 应用程序编程接口,我们只要会用即可。

1.2API使用步骤是什么?

??? 1. 打开帮助文档
??? 2. 点击显示,找到索引,看到输入框
??? 3. 你要找谁?在输入框里输入,然后回车
??? 4.看包。java.lang下的类不需要导包,其他需要
??? 5. 看类的解释和说明
??? 6. 学习构造方法
??? 7. 使用成员方法

二,Scanner类

2.1引用类型使用步骤是什么?

1,导包
	导包怎么使用?
		使用import关键字导包,在类的所有代码之前导包,
		引入要使用的类型,java.lang包下的所有类无需导入。
	导包的格式是什么?
		import 包名.类名;
		举例:java.util.Scanner;
2,创建对象
	格式?
		数据类型 变量名 = new 数据类型(参数列表);
		举例:
		Scanner sc = new Scanner(System.in);
	什么是创建对象?
		使用该类的构造方法,创建一个该类的对象。
3,调用方法
	什么是调用方法?
		调用该类的成员方法,完成指定功能
	格式?
		变量名.方法名();
		举例:int i = sc.nextInt(); // 接收一个键盘录入的整数

2.2什么是Scanner类?

??? 一个可以解析基本类型和字符串的简单文本扫描器
??? ??? 例如,用户从 System.in 中读取一个数:
??? ??? ??? Scanner sc = new Scanner(System.in);
??? ??? ??? int i = sc.nextInt();
??? ??? ??? //System.in 系统输入指的是通过键盘录入数据。

2.3Scanner用法大全?

```php
package Scanner;

// 第一步,导包
import java.util.Scanner;

/**
 * 什么是Scanner类?
 * 一个可以解析基本类型和字符串的简单文本扫描器
	例如,用户从 System.in 中读取一个数:
	Scanner sc = new Scanner(System.in); 
	int i = sc.nextInt();
	//System.in 系统输入指的是通过键盘录入数据。
 * 引用类型使用步骤是什么?
	1,导包
		导包怎么使用?
			使用import关键字导包,在类的所有代码之前导包,
			引入要使用的类型,java.lang包下的所有类无需导入。
		导包的格式是什么?
			import 包名.类名;
			举例:java.util.Scanner;
	2,创建对象
		格式?
			数据类型 变量名 = new 数据类型(参数列表);
			举例:
			Scanner input = new Scanner(System.in);
		什么是创建对象?
			使用该类的构造方法,创建一个该类的对象。
	3,调用方法
		什么是调用方法?
			调用该类的成员方法,完成指定功能
		格式?
			变量名.方法名();
			举例:int i = input.nextInt(); // 接收一个键盘录入的整数
			举例: String str = input.next(); // 接收键盘录入的字符(串)
	Scanner用法大全?
		参考链接:https://blog.csdn.net/RiceVan/article/details/100109601
 */
public class Demo01_JieShao {

	/**
	 * Scanner类讲解
	 * @param args
	 */
	public static void main(String[] args) {
		demo03();
	}	
	 
	
	/**
	 * next()与nextLine()方法详解
	 * 1.都是吸取输入控制台输入的字符
	 * 2.next()方法不会吸取字符前和后的空格/Tab,只吸取字符,
	 * 开始吸取字符(字符前后不算)直到遇到空格/Tab/回车截取吸取
	 * 3.nextLine() 吸取字符前后的空格/Tab键
	 * 4.next()与nextLine(),遇到回车都截取吸取
	 */
	 public static void demo01() {
		// 第二步,创建对象
		Scanner input = new Scanner(System.in);
		// 提示信息
		System.out.println("请输入数据:");
		
	
		// 第三步,使用方法
		/* 从控制台输入:abcd abcd abcd
		 * 输出的结果是:abcd
 						 abcd abcd
		 * 因为next方法遇到了空格停止接收,所以只输出了abcd,
		 * nextLine方法开始从空格处开始接收直到遇到了第一个回车那么结束接收,
		 * 说明nextLine方法可以接收空格,next方法遇到空格等会停止接收
		 * ----------------------------------------------
		 * String str = input.next(); 
		 * System.out.println(str); 
		 * String str2 =input.nextLine(); 
		 * System.out.println(str2);
		 */
		 
		/* 先输入Tab键,然后输入abcd
		 * nextLine输出的abcd在中间,说明nextLine方法可以接收Tab键
		 * next输出的abcd在开头,说明next方法没有接收Tab键
		 ------------------------------------------------
		 String str = input.nextLine();
	     System.out.println(str);*/
	 }
	
	/**
	 * 练习:键盘输入两个int数字,并且求出和值。
		思路:
		1. 既然需要键盘输入,那么就用Scanner
		2. Scanner的三个步骤:导包、创建、使用
		3. 需要的是两个数字,所以要调用两次nextInt方法
		4. 得到了两个数字,就需要加在一起。
		5. 将结果打印输出。
	 */
	 public static void demo02() {
		 
		 Scanner sc = new Scanner(System.in);
		 
	     int num = sc.nextInt();
	     System.out.println("输入的int数字是:" + num);
	     int um = sc.nextInt();
	     System.out.println("输入的int数字是:" + um);

	     int c=num+um;
	     System.out.println("输入的和为:" + c);
	 }
	 
	 /**
	  * 练习:键盘输入三个int数字,然后求出其中的最大值。
			思路:
			1. 既然是键盘输入,肯定需要用到Scanner
			2. Scanner三个步骤:导包、创建、使用nextInt()方法
			3. 既然是三个数字,那么调用三次nextInt()方法,得到三个int变量
			4. 无法同时判断三个数字谁最大,应该转换成为两个步骤:
			    4.1 首先判断前两个当中谁最大,拿到前两个的最大值
			    4.2 拿着前两个中的最大值,再和第三个数字比较,得到三个数字当中的最大值
			5. 打印最终结果
	  */
	 public static void demo03() {
		  	Scanner sc = new Scanner(System.in);

	        System.out.println("请输入第一个数字" );
	        int num = sc.nextInt();
	        System.out.println("请输入第二个数字" );
	        int um = sc.nextInt();
	        System.out.println("请输入第三个数字" );
	        int m = sc.nextInt();

	        // 首先得到前两个数字当中的最大值
	        int ma = num > um ? num : um;
	        int max = ma > m ? ma : m;
	        System.out.println("最大值是" +max );
	 }
	 
}

三,执行结构概述

???概述
??????任何简单或复杂的算法都可以由顺序结构、分支结构和循环结构这三种基本 结构组合而成。 它们的共同点是都包含一个入口和一个出口,它们的每个代码都有机会被执行,不会出现死循环。
??????顺序结构
?????????顺序结构是一种基本的控制结构,它按照语句出现的顺序执行操作
??????分支结构
?????????分支结构又被称为选择结构,根据条件成立与否来执行操作,
??????循环结构
?????????循环结构是种重复结构,如果条件成立,它会重复执行某一循环体,直到出现不满足的条件为止。

3.1,分支结构

3.1.1if
???格式:
??????if(关系表达式){ 语句体; }
???流程
??????首先判断关系表达式
??????看其结果是true还是false 如果是true就执行语句体 如果是false就不执行语句体
???图解
在这里插入图片描述
3.1.2-if…else
???格式:
??? ???if(关系表达式) {
??? ???语句体1;
??? ???}else {
??? ???语句体2;
??? ??? }
???流程:
??? ???首先判断关系表达式看其结果是true还是false
??? ???如果是true就执行语句体1
??? ???如果是false就执行语句体2
???图解:
在这里插入图片描述
3.1.3if…else if…else
???格式:
??????if (判断条件1) {
??????执行语句1;
??????} else if (判断条件2) {
??????执行语句2;
?????? }… }else if (判断条件n) {
??????执行语句n;
?????? } else {
??????执行语句n+1;
??????}
???流程:
??????首先判断关系表达式1看其结果是true还是false
??????如果是true就执行语句体1
??????如果是false就继续判断关系表达式2看其结果是true还是false
??????如果是true就执行语句体2 如果是false就继续判断关系表达式
??????…看其结果是true还是false …如果没有任何关系表达式为true,就执行语句体n+1
???图解:
在这里插入图片描述
代码:

package FenZhiJieGou;

import java.util.Scanner;

public class Demo02_if {

	
	/**
	 * 分支结构-if相关内容
	 * @param args
	 */
	public static void main(String[] args) {
		demo04();
	}
	
	
	 // 单if语句
	 public static void demo01() {
		  System.out.println("今天天气不错,正在压马路……突然发现一个快乐的地方:网吧");
	        int age = 19;
	        if (age >= 18) {
	            System.out.println("进入网吧,开始high!");
	            System.out.println("遇到了一群猪队友,开始骂街。");
	            System.out.println("感觉不爽,结账走人。");
	        }
	        System.out.println("回家吃饭");
	 }
	
	 // 标准的if-else语句
	 public static void demo02() {
		 int num = 666;
	        if (num % 2 == 0) { // 如果除以2能够余数为0,说明是偶数
	            System.out.println("偶数");
	        } else {
	            System.out.println("奇数");
	        }
	 }
	
	 // if..else if...else
	 public static void demo03() {
		 int x = -10;
	        int y;
	        if (x >= 3) {
	            y = 2 * x + 1;
	        } else if (-1 < x && x < 3) {
	            y = 2 * x;
	        } else {
	            y = 2 * x - 1;
	        }
	        System.out.println("结果是:" + y);
	 }
	 
	 // 课上例子成绩分布,多重if..else语句
	 public static void demo04() {
		 
		Scanner input = new Scanner(System.in);
		System.out.println("请输入成绩:");
		 
		int score = input.nextInt();
		
		 if (score >= 90 && score <= 100) {
	            System.out.println("优秀");
	        } else if (score >= 80 && score < 90) {
	            System.out.println("好");
	        } else if (score >= 70 && score < 80) {
	            System.out.println("良");
	        } else if (score >= 60 && score < 70) {
	            System.out.println("及格");
	        } else if (score >= 0 && score < 60) {
	            System.out.println("不及格");
	        } else { // 单独处理边界之外的不合理情况
	            System.out.println("数据错误");
	        }
	 }
}

3.1.4Switch
???格式:
??? ???switch(表达式) {
??? ???case 常量值1: 语句体1; break;
??? ???case 常量值2: 语句体2; break;
??? ???… default: 语句体n+1;break;
??????}
???switch 语句有关规则:
??? ???表达式的返回值必须是下述几种类型之一:int, byte, char, short,String;
??? ???case 子句中的取值必须是常量,且所有 case 子句中的取值应是不同的;
??? ???default 子句是可选的; break 语句用来在执行完一个 case 分支后使程序跳出 switch 语句块;如果 case 后面没有写 break 则直接往下面执行!Case 后面的执行体可写{ }也可以不写{ }.
???流程:
??? ???首先计算出表达式的值
??? ???其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
??? ???最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
???图解:
在这里插入图片描述
???case的穿透性:
??? ???在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运 行,直到遇到break,或者整体switch结束。由于case存在穿透性,因此初学者在编写switch语句时,必须要写上break。
代码:

package FenZhiJieGou;

import java.util.Scanner;

public class Demo03_Switch {

	/**
	 * 分支结构-Switch相关内容
	 * @param args
	 */
	public static void main(String[] args) {
		demo01();
	}
	
	// 例题
	public static void demo01() {
		Scanner input = new Scanner(System.in); 
		System.out.println("请输入月份:"); 
		int month = input.nextInt(); 
		
		// 输出月份天数
		switch(month){ 	// 利用case的穿透性,简化代码
			case 1: 
			case 3: 
			case 5: 
			case 7: 
			case 8: 
			case 10: 
			case 12: System.out.println(month + "月共有 31 天"); break; 
			case 4: 
			case 6: 
			case 9: 
			case 11: System.out.println(month + "月共有 30 天"); break;
			case 2: System.out.println(month + "月共有 28 天"); break;
			default : System.out.println("友情提示,您输入有误!"); break;
		}
	}
}

3.2,循环结构

???循环语句功能 ,在循环条件满足的情况下,反复执行特定代码
3.2.1while
???格式:
??????初始化表达式① while(布尔表达式②){
??????循环体③ 步进表达式④
??????}
???流程:
??????执行顺序:
?????????①②③④>②③④>②③④…②不满足为止。
?????????①负责完成循环变量初始化。
?????????②负责判断是否满足循环条件,不满足则跳出循环。 ③具体执行的语句。
?????????④循环后,循环变量的变化情况。
???图解:
在这里插入图片描述3.2.2do…while
???格式:
??????初始化表达式①
?????? do{
??????循环体③
??????步进表达式④
?????? }while(布尔表达式②);
???流程:
??????执行顺序:
?????????①③④>②③④>②③④…②不满足为止。
?????????①负责完成循环变量初始化。
?????????②负责判断是否满足循环条件,不满足则跳出循环。 ③具体执行的语句
?????????④循环后,循环变量的变化情况
???图解:
在这里插入图片描述???特点:
??????无条件执行一次循环体,即使我们将循环条件直接写成false,也依然会循环一次。这样的 循环具有一定的风险性,因此初学者不建议使用do…while循环。
???while 循环和 dowhile 循环的区别?
??????while:先判断条件,如果条件满足,再执行循环操作
??????do while:先执行一遍循环操作,然后再判读条件,如果条件满足,继续执行循环操作。
代码:

package XunHuanJieGou;
import java.util.Scanner;

public class Demo05_While {

	/**
	 * 循环结构-While相关内容
	 * @param args
	 */
	public static void main(String[] args) {
		demo02();
	}
	
	// while例题
	public static void demo01() {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入班级总人数:");
		// 使用变量studentNum记录班级总人数
		int studentNum = input.nextInt();
		// 用于记录循环的次数,以及控制循环何时结束
		int i = 0;
		// 定义变量sum,用于统计总分数
		int sum = 0;
		while(i < studentNum) {
			i++;
			System.out.println("请输出第"+i+"个学生的成绩:");
			int s = input.nextInt();
			sum +=s;	
		}
		System.out.println("学生的平均成绩为:"+sum/studentNum);
	}
	
	//  do...while与while的比较
	public static void demo02() {
		int i = 5;
		/*
		 * do { i++; System.out.println(i); }while(i<5);
		 */
		
		while(i<5) {
			i++;
			System.out.println(i);
		}
		System.out.println("程序结束");
	}

}

3.2.3for
???格式:
??????for(初始化表达式①; 布尔表达式②; 步进表达式④){ 循环体③
?????? }
???流程:
??????执行顺序:
?????????①②③④>②③④>②③④…②不满足为止。
?????????①负责完成循环变量初始化
?????????②负责判断是否满足循环条件,不满足则跳出循环 ③具体执行的语句
?????????④循环后,循环条件所涉及变量的变化情况
???图解:
在这里插入图片描述
代码:

package XunHuanJieGou;

public class Demo04_For {

	/**
	 * 循环结构-For相关内容,嵌套循环
	 * @param args
	 */
	public static void main(String[] args) {
		demo02();
	}
	
	// For例题:1加到100的和
	public static void demo01() {
		int result = 0; 
		
		for(int i=1; i<=100; i++) { 
			result += i; 
			}
		System.out.println("result=" + result);	
	}
	
	// 嵌套循环
	public static void demo02() {
		
		// 打印时间
		/*
		 * for (int hour = 0; hour < 24; hour++) { // 外层控制小时 for (int minute = 0; minute
		 * < 60; minute++) { // 内层控制小时之内的分钟 System.out.println(hour + "点" + minute +
		 * "分"); } }
		 */
		
		for(int i=0;i<10;i++) {//外层控制行数
			for(int j=0;j<10;j++) {//内层控制列数
				System.out.print("* ");	
			}
			System.out.println();	
		}
	}
}

3.2.4嵌套循环
???定义:
??????指一个循环的循环体是另一个循环。比如for循环里面还有一个for循环,就是嵌套循环。总共的循环次数=外循环次数*内循环次数
???格式:
??????for(初始化表达式①; 循环条件②; 步进表达式⑦) {
??????for(初始化表达式③; 循环条件④; 步进表达式⑥) {
??????执行语句⑤;
??????}
??????}
???流程:
??????执行顺序:①②③④⑤⑥>④⑤⑥>⑦②③④⑤⑥>④⑤⑥ 外循环一次,内循环多次。比如跳绳:一共跳5组,每组跳10个。5组就是外循环,10个就是内循环。
3.2.5补充
(1)循环语句的区别
控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继 续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消 失,能够提高内存的使用效率。在已知循环次数的时候使用推荐使用for,循环次数未知的时推荐使用while。
(2)跳出语句
break:跳出循环
使用场景:终止switch或者循环在选择结构switch语句中 在循环语句中 离开使用场景的存在是没有意义的。
continue:跳出本次循环,进行下一次循环
使用场景:结束本次循环,继续下一次的循环
(3)如何退出多重循环?
看代码:给多重循环起别名,内层循环,break:别名;

package XunHuanJieGou;

public class demo06_TiaoChuXunHuan {
	
	
	/**
	 * break与continue语句
	 * 		break是用于终止本轮所有次循环。即不执行本次循环中break后面的语句,直接跳出循环。
	 * 		continue是用于终止本轮本次循环。即本次循环中continue后面的代码不执行,进行下一次循环的入口判断。
	 * @param args
	 */
	public static void main(String[] args) {
		demo02();
	}
	
	// Break
	public static void demo01() {
		for (int i = 1; i <= 10; i++) {
	    // 如果希望从第4次开始,后续全都不要了,就要打断循环
			if (i == 4) { // 如果当前是第4次
				break; // 那么就打断整个循环
	         }
	         System.out.println("Hello" + i);
	    }
	}
	
	// Continue
	public static void demo02() {
		for (int i = 1; i <= 10; i++) {
            if (i == 4) { // 如果当前是第4层
                continue; // 那么跳过当前次循环,马上开始下一次(第5层)
            }
            System.out.println("Hello" + i );
        }
	}
	
	// 退出多重循环
	public static void demo03() {
		haha:for(int i=0;i<10;i++) {
			for(int j=0;j<10;j++) {
				System.out.print("*i="+i+",j="+j);	
				if(i==5 && j==5) {
					break haha;
				}
			}
		}
	}
}

循环语句练习(图形打印):

package XunHuanJieGou;

import java.util.Scanner;

public class Demo07_TuXingdaYin {

	/**
	 * 图形打印
	 * @param args
	 */
	public static void main(String[] args) {
		demo02();
	}
	

	
	
	/**
	 图形
	 *
	 ***
	 *****
	 ******* 
	 解决方案:
	 	外层循环控制行数:4
	 	内层循环控制列数:第一行循环1次,2-3,3-5,4-7
	 */
	public static void demo01() {
		for(int i=0;i<4;i++) {
			// i: 0 1 2 3
			for(int j=0;j<i*2+1;j++) {
				System.out.print("*");
			}
			System.out.println();
		}	
	}
	
	
	/**
	 图形
	    *
	   ***
	  *****
	 ******* 
	 解决方案:
	 	外层循环控制行数:4
	 	内层循环1,控制空格列数:第一行三个空格,第二行2空格,第三行1个空格,第四行0空格
	 	内层循环2,控制*号列数:第一行时循环一次,第二行时循环3次,第三行循环五次,第四行循环7次
	 */
	public static void demo02() {
		 Scanner sc = new Scanner(System.in);
	        int n = sc.nextInt();
	        for(int i = 1; i<=n; i++){
	            //输出n-i个空格
	            for(int j = 1; j<=n-i; j++){
	                System.out.print(" ");
	            }
	            //输出2*i-1个星
	            for(int j = 1; j<=2*i-1; j++){
	                System.out.print("*");
	            }
	            //换行
	            System.out.println();
	        }
	}
	
	
	/**
	 图形
	    *
	   ***
	  *****
	 ******* 
	  *****
	   ***
	 ---*
	 解决方案:
	 菱形的上半部分:
	 	外层循环控制行数:X
	 	内层循环1,控制空格列数:第一行X-1个空格,第二行X-2空格,......第n行x-n空格
	 	内层循环2,控制*号列数:第n行时循环2*n-1个*
	 下半部分:
	 	外层循环控制行数:X-1
	 	内层循环1,控制空格列数:第n行时n空格
	 	内层循环2,控制*号列数:第n行时循环2*(x-n)-1个*
	 	
	 */
	public static void demo03() {
		 Scanner sc = new Scanner(System.in);
	     int n = sc.nextInt();
	        
	        //零形的上半部分
	        for(int i = 1; i<=n; i++){
	            //输出n-i个空格
	            for(int j = 1; j<=n-i; j++){
	                System.out.print(" ");
	            }
	            //输出2*i-1个星
	            for(int j = 1; j<=2*i-1; j++){
	                System.out.print("*");
	            }
	            //换行
	            System.out.println();
	        }
	        
	        //零形的下半部分
	        for(int i = 1; i<=n-1; i++){
	            //输出n个空格
	            for(int j = 1; j<=i; j++){
	                System.out.print(" ");
	            }
	            //输出2*(x-n)-1个星
	            for(int j = 1; j<=2*(n-i)-1; j++){
	                System.out.print("*");
	            }
	            //换行
	            System.out.println();
	        }
	            
	}

}

四,综合练习

需求1:判断用户输入类型

public class Demo08_PanDuanShuRuLeiXing {

	/**
	 * 判断用户输入类型
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入数字:");
		
		// 在接收输入之前判断输入的类型是否为int
		if(input.hasNextInt()) {
			int num = input.nextInt();
		    System.out.println("输入的int数字是:" + num);
		}else {
			System.out.println("输入错误,请重新输入");
		}
	}	
}

需求2:出租车计费任务(忘记需求了)

package RenWu;

import java.util.Scanner;

import javax.security.sasl.SaslServer;

// 拉下的进度有点多,直接跟着视频走一遍。看情况可能画个流程图
public class Task01_ChuZuCheJiFei {

	/**
	 * 出租车计费任务
	 * @param args
	 */
	public static void main(String[] args) {
		// 键盘输入对象
		Scanner input = new Scanner(System.in);
		
		// 定义变量
		double sum = 0;// 总费用
		double perPrice = 2.3;// 基本单价
		double mileMoney = 0;//里层费用
		double lowSpeedMoney = 0;//低速行驶费用
		double orderMoney = 0;//预约叫车费用
		double emptyMoney = 0;//空驶费用
		double nightMoney = 0;//夜间行驶费用
		double oilMoney = 1;//燃油附件费用
		
		//---里程费用
		System.out.print("请输入总里程数");
		double mile = input.nextDouble();
		if (mile > 3) {
			mileMoney = 13+(mile-3)*perPrice;
		}else {
			mileMoney=13;
		}
		
		//---低速行驶费用
		System.out.println("是否有低速行驶(true/false)?");
		boolean lowSpeedFlag = input.nextBoolean();
		if(lowSpeedFlag) {
			System.out.println("请输入低速行驶时间: ");
			int minute = input.nextInt();
			System.out.println("是否是在早晚高峰(true/false)?");
			boolean rushFlag = input.nextBoolean();
			if(rushFlag) {
				lowSpeedMoney = minute/5*perPrice*2;
			}else {
				lowSpeedMoney = minute/5*perPrice*1;
			}
		}
		
		//---预约叫车
		System.out.println("是否预约叫车(true/false)?");
		boolean orderFlag = input.nextBoolean();
		if(orderFlag) {
			System.out.println("请输入预约小时数:");
			int hour = input.nextInt();
			if(hour > 4) {
				orderMoney = 6;
			}else {
				orderMoney = 5;
			}
			
		}
		
		//---空驶费用
		if(mile > 15) {
			System.out.println("请输入是否往返在两公里范围内(true/false)?");
			boolean roundFlag = input.nextBoolean();
			if(!roundFlag) {
				emptyMoney = (mile-15)*perPrice*1.5;
			}
		}
		
		//---夜间费用
		System.out.println("请输入是否夜间行驶(true/false)?");
		boolean nightFlag = input.nextBoolean();
		if(nightFlag) {
			nightMoney = (mile-3)*perPrice*0.2;
		}
		
		
		// 计算总费用
		sum = mileMoney+lowSpeedMoney+orderMoney+emptyMoney+nightMoney+oilMoney;
		System.out.println("此次行程的总费用"+Math.round(sum));
		System.out.println("里程费用"+mileMoney);
		System.out.println("低速行驶费用"+lowSpeedMoney);
		System.out.println("空驶费用"+emptyMoney);
		System.out.println("夜间行驶费用"+nightMoney);
		System.out.println("燃油附件费用"+oilMoney);
	}
}

需求3:流程控制的逻辑训练任务

???1,计算应缴金额 商场根据会员积分打折:
???2,计算该年该月天数
???3,图形打印:
???4,打印九九乘法表
???5,打印水仙花数

package RenWu;

import java.util.Scanner;

public class Task02_LiuChengKongZhi {

	
	/**
	 * 流程控制的逻辑训练任务
	 * @param args
	 */
	public static void main(String[] args) {
		demo05();
	}
	
	/**
	 	计算应缴金额 商场根据会员积分打折:
		2000 分以内打 9 折, 4000 分以内打 8 折, 8000 分以内打 7.5 折, 8000 分以上打 7 折, 
		使用 if-else-if 结构,实现手动输入购物金额和积 分,计算出应缴金额
	 */
	public static void demo01() {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入积分:");
		int score = input.nextInt(); 
		System.out.println("请输入购物金额:");
		double money = input.nextDouble();
		
		 if (score <= 2000 ) {
			 money = money*0.9;
	        } else if (score >= 2000 && score < 4000) {
	        	money = money*0.8;
	        } else if (score >= 4000 && score < 8000) {
	        	money = money*0.75;
	        }
	        else { 
	        	money = money*0.7;
	        }
		
		
		System.out.println("应缴金额:"+money);
	}
	
	
	/**
	 * 计算该年该月天数
	 * 解决思路:
	 * 	1,输入拷贝demo01,把接收类型换为int.
	 * 	2,switch部分的例题拷贝到下面改一下输出,在加上闰年判断。
	 */
	public static void demo02() {
		 	Scanner input = new Scanner(System.in);   //输入
	        System.out.println("请输入年份:");
	        int year = input.nextInt();             //接收控制台输入的年份
	        System.out.println("请输入月份:");
	        int month = input.nextInt();            //接收控制台输入的月份
	        switch (month){
	            //1,3,5,7,8,10,12都是31天
	            case 1:
	            case 3:
	            case 5:
	            case 7:
	            case 8:
	            case 10:
	            case 12:
	                System.out.println(year+"年"+month+"月有31天");break;
	            //4,6,9,11都是30天
	            case 4:
	            case 6:
	            case 9:
	            case 11:
	                System.out.println(year+"年"+month+"月有30天");break;
	            case 2:
	                //判断闰年
	                if(year%4==0&&year%100!=0||year%400==0){
	                    System.out.println(year+"年2月有29天");
	                }else {
	                    System.out.println(year+"年2月有28天");
	                }
	                break;
	        }
	}
	
	/**
	 * 图形打印:
	 * 解决思路:
	 * 1,第一,二个简单属于白给类型。第三个跟前面讲过的图形详解例题一毛一样,不做。
	 */
	public static void demo03() {
		Scanner sc = new Scanner(System.in);
	    int n = sc.nextInt();
		
	    // 第一个图形
	    for(int i=1;i<=n;i++) {
			for(int j=1;j<=i;j++) {
				System.out.print("*");
			}
			System.out.println();
		}	
	    
	    
	    // 第二个图形
	    for(int i=1;i<=n;i++) {// 因初始值设为1,故内循环条件+1
			for(int j=1;j<=n-i+1;j++) {
				System.out.print("*");
			}
			System.out.println();
		}	
		
	}
	
	
	/**
	 * 打印九九乘法表
	 */
	public static void demo04() {
		System.out.println("九九乘法表");
		 for(int i=1;i<=9;i++) {
				for(int j=1;j<=i;j++) {
					System.out.print(j+"*"+i+"="+i*j+"\t");
				}
				System.out.println();
			}	
	}
	
	
	/**
	 * 打印水仙花数
	 */
	public static void demo05() {
		 //声明是三个 变量,用来存放三位数的三个位子上的值
	    int ge,shi,bai;
	    //循环取得所有的三位数
	    for (int i = 100; i < 1000; i++) {
	        //先取出个位数,任何三位数模10都会是个位数
	        ge=i%10;
	        //取出十位数,三位数除以10得到一个两位数,再模10,取到十位数
	        shi=(i/10)%10;
	        //取出百位数,任何三位数直接除以100遍可取到百位数
	        bai=i/100;
	        //判断i是否是水仙花数,如果是则输出结果,不是则退出
	        if(i==ge*ge*ge+shi*shi*shi+bai*bai*bai){
	            //使用print输出不换行,\t在数字之间添加一个制表符
	            System.out.print(i+"\t");
	        }
	    }	
	}
}

参考:距离记笔记的时候过了一段时间,如果我的笔记有明显借鉴了您的内容,请见谅。(我记忆力很差的,当初写笔记的时候,参考文档记录的可能不全)
Scanner用法参考链接:https://blog.csdn.net/RiceVan/article/details/100109601
图形打印参考链接:https://blog.csdn.net/cui_yonghua/article/details/90581140
资料下载链接(笔记+代码+其他):百度网盘
链接:https://pan.baidu.com/s/1hhkEU7CiXeYZPgqddO4b6w
提取码:1111
感谢阅读,祝你从此一帆风顺。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-12-07 12:09:34  更:2021-12-07 12:11:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:52:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码