有一个处理单价为5角钱饮料的自动售货机:若投入5角钱或1元钱的硬币,压下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。若售货机没有零钱找,则一个显示〖零钱找完〗的红灯亮,这时在投入1元硬币并压下按钮

有一个处理单价为5角钱饮料的自动售货机:若投入5角钱或1元钱的硬币,压下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。若售货机没有零钱找,则一个显示〖零钱找完〗的红灯亮,这时在投入1元硬币并压下按钮后,饮料不送出来而且1元硬币也退出来;若有零钱找,则显示〖零钱找完〗的红灯灭,在送出饮料的同时退还5角硬币。在这里插入图片描述`package softtest;import java.util.Random;

import java.util.Scanner;public class Money {
 static Scanner sc;
 static double money;
 static String goods;
 static String e;
 static String[] sdate= {"【零钱找完】灯灭","【零钱找完】灯亮"};
 //【零钱找完】灯灭时,此时可以投币1元
 public static void light() {
  sc=new Scanner(System.in);
  System.out.print(“请投币:”);
  money=sc.nextDouble();
  if(money5) {
   pentagon();
  }else if(money
1){
   System.out.print(“请选择橙汁还是啤酒:”);
   goods=sc.next();
   if(goods.equals(“橙汁”)) {
    System.out.println(“恭喜您购买成功!您选择了橙汁!给您找零5角钱!”);
    return;
   }else if(goods.equals(“啤酒”)) {
    System.out.println(“恭喜您购买成功!您选择了啤酒!给您找零5角钱!”);
    return;
   }else {
    System.out.println(“对不起!此柜无此货源!”);
    return;
   }
  }else {
   System.out.println(“投币错误!”);
  }
 }
 //投入五角时机器反应
 public static void pentagon() {
   System.out.print(“请选择橙汁还是啤酒:”);
   goods=sc.next();
   if(goods.equals(“橙汁”)) {
    System.out.println(“恭喜您购买成功!您选择了橙汁!”);
    return;
   }else if(goods.equals(“啤酒”)) {
    System.out.println(“恭喜您购买成功!您选择了啤酒!”);
    return;
   }else {
    System.out.println(“对不起!此柜无此货源!”);
    return;
   }
 }
 //【零钱找完】灯亮时,无法找零,此时不可投币1元
 public static void close_light() {
  sc=new Scanner(System.in);
  System.out.print(“请投币:”);
  money=sc.nextDouble();
  if(money5) {
   pentagon();
  }else if(money
1){
   System.out.println(“对不起!零钱已找完,1元退还给您!”);
   return;
  }else {
   System.out.println(“投币错误!”);
  }
 }
 public static void main(String[] args) {
  // TODO 自动生成的方法存根
  Random rd=new Random();
  for(int x=1;true;x++) {
   int k=rd.nextInt(sdate.length);
   e=sdate[k];
   System.out.println(“当前机器状态:”+e);
   if(e.equals("【零钱找完】灯灭")) {
    light();
//    return;  //是否循环执行购买
   }
   if(e.equals("【零钱找完】灯亮")){
    close_light();
//    return; //是否循环执行购买
   }
  }
 }
}
`

好的!下面是关于“饮料自动售货机因果图”的详细解答: ### 饮料自动售货机的因果图分析 **背景描述:** 我们有一台饮料自动售货机,用户可以投入硬币选择购买橙汁啤酒。规则如下: 1. 如果投 **5硬币** 按下按钮橙汁啤酒),则相应饮料出; 2. 如果投 **1硬币** 按下按钮,则相应饮料出,退还 5硬币。 为了表示输入条件和输出结果之间的关系,我们可以绘制一张因果图来帮助设计测试用例。 --- #### 因果图画法步骤 ##### 输入条件(原因): 1. 用户是否投入了 **5硬币** (记作 C1) 2. 用户是否投入了 **1硬币** (记作 C2) 3. 是否按下了 **橙汁按钮** 者 **啤酒按钮** (记作 C3) ##### 输出动作(结果): 1. 售货机会否 **橙汁** **啤酒** (记作 E1) 2. 售货机会否 **退还5硬币** (记作 E2) 根据题目要求建立因果关系表,以下是基本逻辑推导: - 只有当 C1 = true OR C2 = true AND 按下任一按钮 (C3) ,E1 才会触发。 - 当且仅当 投入的是 1 硬币(C2=true),才会导致退钱(E2=true) | 条件 | 动作 | |--------------|------------| | (C1 ∨ C2) ∧ C3 → E1 | 同时对于退款部分, - 若只存在一种情况即 `C2` 成立才需要额外操作退款,所以可得出公式: | 条件 | 动作 | |---------------|-----------| | C2 → E2| 通过以上两个布尔表达式即可构建整的因果关联模型. --- #### 绘制因果图: 下面是一个简化版的因果图表示意图: ``` [投入5角] --------> [无退款] \ ---->[出饮料] [投入1] ---------> [出饮料 & 退款] / [选饮料(橙汁/啤)] --/ ``` 每个分支代表了一种特定情境下的行为路径组合;它涵盖了所有可能发生的交互模式。 --- ### 实际应用意义 利用这种形式化工具可以帮助开发者清晰地理解系统需求、验证业务流程以及生成全面详尽的功能覆盖度高的自动化测试案例集。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

三脚猫的喵

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

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

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

打赏作者

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

抵扣说明:

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

余额充值