执行结构
概述
-
1996 年,计算机科学家 Bohm 和 Jacopini 证明了:任何简单或复杂的算法都可以由顺序结构、分支结构和循环结构这三种基本 结构组合而成。
-
它们的共同点是都包含一个入口和一个出口,它们的每个代码都有机会被执行,不会出现死循环。
-
顺序结构
顺序结构是一种基本的控制结构,它按照语句出现的顺序执行操作
-
分支结构
分支结构又被称为选择结构,根据条件成立与否来执行操作,
-
循环结构
循环结构是一种重复结构,如果条件成立,它会重复执行某一循环体,直到出现不满足的条件为止。
分支结构
一、if 条件语句
if 条件结构是根据条件判断之后再做处理
if(条件语句){…}
if (条件语句){…}else{…}
if (条件语句){…}else if(条件语句){…}
if (条件语句){…}else if(条件语句){…}else{…}
二、switch 语句、
switch(表达式){
case 取值 1: 语句块 1;break;
case 取值 n: 语句块 n;break;
default: 语句块 n+1;break;
}
switch 语句有关规则
表达式的返回值必须是下述几种类型之一:int, byte, char, short,String;
case 子句中的取值必须是常量,且所有 case 子句中的取值应是不同的;
default 子句是可选的;
break 语句用来在执行完一个 case 分支后使程序跳出 switch 语句块;如果 case 后面没有写 break 则直接往下面执行!
Case 后面的执行体可写{
循环语句
一、简介
循环语句功能
在循环条件满足的情况下,反复执行特定代码
循环语句分类
for 循环
while 循环
do/while 循环
二、while 循环
符合条件,循环继续执行;否则,循环退出
特点:先判断,再执行
while(条件表达式){
//语句块;
}
三、do-while 循环
执行一遍循环操作,符合条件,循环继续执行;否则,循环退出
特点:先执行,再判断
do {
循环操作
}while ( 条件表达式 );
四、for 循环
语法:
for(初始化参数;判断条件 ;更新循环变量){
循环体;
}
例题:
本次任务一起来解决出租车计费问题。某市出租车计费标准如下图所示,
请根据此标准完成一个出租车计费模拟功能,能够计算总费用和列出产生费用
项目详细情况说明,帮助出租车师傅和乘客了解计费标准。
结合上述表格,可以得出:总车费=里程费用+低速行驶费(或者等候费)
+预约叫车服务费+空驶费+夜间收费+燃油附加费。需要收集的数据有:里程数、
低速行驶时长(早晚高峰期行驶时长和其他时间段行驶时长)、是否预约叫车
(按四小时为标准)、开始乘坐出租车时间、出租车到达终点站时间,结合这
些数据和表中提供的标准就可以使用程序进行计算总车费了。
package com.atkaikeba;
import java.util.Scanner;
public class Taxi {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//定义变量存储各车费,总车费,总里程
//总车费
int cash = 0;
//里程费
double kmCash = 0;
//低速费
double lowSpeedCash = 0;
//预约费
int appointmentCash = 0;
//空驶费
double lingerCash = 0;
//夜间费
double nightCash = 0;
//燃油费
int oil = 1;
//里程
double km;
System.out.print("请输入总里程(km):");
if(input.hasNextDouble()) {
km = input.nextDouble();//接收
}else {
//输入有误,结束进程
System.out.println("输入有误");
return;
}
//接收上车时间和下车时间
//上车
int onHh;
int onMm;
int onSs;
//下车
int offHh;
int offMm;
int offSs;
//上车
System.out.println("请输入上车时间(时:分:秒):");
//时
System.out.print("时:");
if(input.hasNextInt()) {
onHh = input.nextInt();//接收
if(onHh<0 | onHh>23) {
//输入有误,结束进程
System.out.println("输入有误");
return;
}
}else {
//输入有误,结束进程
System.out.println("输入有误");
return;
}
//分
System.out.print("分:");
if(input.hasNextInt()) {
onMm = input.nextInt();//接收
if(onMm<0 | onMm>59) {
//输入有误,结束进程
System.out.println("输入有误");
return;
}
}else {
//输入有误,结束进程
System.out.println("输入有误");
return;
}
//秒
System.out.print("秒:");
if(input.hasNextInt()) {
onSs = input.nextInt();//接收
if(onSs<0