计算机算法流程,只有三种基本结构---------顺序结构、选择结构、循环结构。
目录
顺序结构
程序自上往下顺序执行
选择结构
if选择结构
if语句单分支
if--else语句(双分支)
if--elseif......(多分支)
嵌套if语句
switch语句
import java.util.Scanner;
public class Shopping {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入是否为会员:");
String yOn = sc.next();
System.out.println("请输入购物金额:");
double money = sc.nextDouble();
double moneyShiJi = money;
if ("y".equals(yOn)){if (money>200){
moneyShiJi = money*0.75;
}else {
moneyShiJi = money*0.8;
}
}else {
if (money > 100) {
moneyShiJi = 0.9 * money;
}
}
System.out.println("实际支付:" + moneyShiJi);
}
}
switch选择结构
switch选择结构可以更好地解决等值判断问题
switch (表达式) {
case 常量 1:
语句;
break;
case 常量 2:
语句;
break;
…
default:
语句;
break;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("欢迎使用我行我素购物管理系统\n\n1.登录系统\n\n2.退出\n\n**************************************");
System.out.println("\n\n请选择,输入数字:");
int num1 = sc.nextInt();
switch (num1){
case 1:
System.out.println("1.客户信息管理\n2.购物结算\n3.真情回顾\n4.注销");
int num2 = sc.nextInt();
switch (num2){
case 1:
System.out.println("1.显示所有客户信息\n2.添加客户信息\n3.修改客户信息\n4.查询客户信息");
System.out.println("谢谢您的使用!");
break;
case 3:
System.out.println("1.幸运大放送\n2.幸运抽奖\n3.生日问候");
System.out.println("谢谢您的使用!");
break;
default:
System.out.println("谢谢您的使用!");
System.exit(0);
}
break;
case 2:
System.out.println("谢谢您的使用!");
break;
default:
System.out.println("谢谢您的使用!");
}
}
相同点与不同点 :
都是用来处理多分支条件的结构
switch
只能处理等值条件判断的情况
多重if选择结构
没有switch选择结构的限制,特别适合某个变量处于某个连续区间时的情况
if选择结构,包括以下形式
基本if选择结构:可以处理单一或组合条件的情况
if-else选择结构:可以处理简单的条件分支情况
多重if选择结构:可以处理分段的条件分支情况
嵌套if选择结构:可以处理复杂的条件分支情况
switch选择结构
多重分支并且条件判断是等值判断的情况
循环结构
无论哪一种循环结构,都有4个必不可少的部分:
初始部分、循环条件、循环体、更新循环变量
while,for循环是先判断再循环
do-while 循环是先循环再判断
while循环
while ( 循环条件 ) {
循环操作
}
do-while
do {
循环操作
} while ( 循环条件 );
int num = 0;
int numSum =0;
while (num <= (98)){
numSum = numSum + (num += 2);
}
for循环
for (参数初始化;条件判断;更新循环变量){
循环操作;
}
for ( int i = 0 ; i < 100 ; i++ ) {
System.out.println("好好学习!");
}
continue 跳出当前循环,不执行continue语句后面循环内的内容。重新执行下一次循环。只能在循环当中使用。
break 结束当前循环 执行循环语句后面的内容。
return:结束当前方法的执行并退出,返回到调用该方法的语句处
package com.base;
import java.util.Scanner;
import static java.lang.System.in;
public class Shopping {
public static void main(String[] args) {
Scanner sc = new Scanner(in);
String anwser = "y";
double allTotal = 0;
while (!"n".equals(anwser)){
System.out.println("MyShopping购物管理系统>购物结算");
System.out.println("***********************************");
System.out.println("请选择购买的商品编号:\n1.T恤\t2.网球鞋\t3.网球拍");
System.out.println("***********************************");
System.out.println("请输入商品编号:");
int choice = sc.nextInt();
double goodsMoney = 0;
String goodsName = "商品编号不存在";
switch (choice){
case 1:
goodsName = "T恤";
goodsMoney = 245.0;
break;
case 2:
goodsName = "网球鞋";
goodsMoney = 570.0;
break;
case 3:
goodsName = "网球拍";
goodsMoney = 320.0;
break;
default:
System.out.println("商品不存在!请重新输入:");
continue;
}
System.out.println("请输入商品数量:");
int num = sc.nextInt();
double total = num * goodsMoney;
allTotal += total;
System.out.println(goodsName + "\t" + goodsMoney + "数量:" + num + "\t合计:" + total);
System.out.println("是否继续(y/n)?");
anwser = sc.next();
}
System.out.println("折扣:0.8");
double money = allTotal*0.8;
System.out.println("应付金额:" + money);
double pay = 0;
do{
System.out.println("实付金额:");
pay = sc.nextDouble();
if(pay < money){
System.out.println("实付金额不能小于应付金额!");
}
}while (pay < money);
System.out.println("找零: " + (pay - money));
System.out.println("程序结束");
System.exit(0);
}
}