请问如果要让运行结果为
请输入第一个数字:5
请输入第二个数字:5
请输入符号+ -* /
*
计算结果:5*5=25
要怎么修改这段代码呀?
该回答引用chatgpt:参考一下
package com.test;
import java.util.Scanner;
public class Calculator1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入第一个数字:");
double num1 = scanner.nextDouble();
System.out.print("请输入第二个数字:");
double num2 = scanner.nextDouble();
System.out.print("请输入符号(+ - * /):");
char operator = scanner.next().charAt(0);
double result = 0;
switch (operator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
result = num1 / num2;
break;
default:
System.out.println("无效的符号");
System.exit(0); // 终止程序
}
System.out.println("计算结果:" + num1 + operator + num2 + "=" + result);
}
}
后面计算这儿转为字符串,不然会报错
5.1机器指令周期分析
根据课堂所掌握的知识,我们可以知道机器指令周期可以分为两部分:取指周期和执行周期。在本模型机中不同的机器指令取指周期都是相同的,都需要经过两个CPU周期和P<1>测试。其中,两个CPU周期在数据通路.上先后完成PC->AR,PC+1和MEM->IR的控制和传送操作;在P<1>测试阶段,对机器指令的操作码进行测试,确定指令实现的功能。对于执行周期,每个机器指今执行过程互不相同,所经过的CPU周期数以及在不同周期对应的数据通路操作也不尽相同。设计过程中,我们组根据每- -条机器指令所要实现的功能,设计出其在执行过程中每个CPU周期在数据通路上完成的操作,并绘制出它的微程序流程图。
5.2模型机硬件译码电路
和前面的实验相比,复杂模型机实验指令多,寻址方式多,只用一种测试已不能满足设计要求,为此指令译码电路需要重新设计。如图5-3-3所示在IR单元的INS、DEC 中实现。
其中,|[7] ~ |[0]为机器指令的第7位到第0位, T4表示在T4为高电平时有效。本实验用到4个通用寄存器R0~R3,对寄存器的选择是通过指令的第四位,为此还得设计一个寄存器译码电路:
5.3微程序流程图设计
微程序流程图与方框图表示的指令的指令周期是一致的,一个方框是一个CPU周期,-一个CPU周期对应一条为指令。
5.4微指令格式设计
①由上述程序流程图可知,本模型机共用到了60条微指令,所以直接微地址需要6位
②控制数据通路开关的为命令共有16种(包括3种P测试),但考虑本机硬件上最大支持24位的微指令,若用直接表示法,微指令字较长, 24位可能不够,因此本模型机采用混合表示法;考虑到后期拓展及同组互斥的性质,将上述的微命令分到A,B,C三个字段中,每个字段长3位。
③模型机中有针对运算器的操作,因此需要5位控制参数CN和S3~S0控制运算器的工作方式
④模型机中有针对主存及外设的操作,所以需要3位微命令I0/M, WR和RD,分别表示针对外设/主存,读操作或写操作。
综上所述,我们所设计的模型机的微指令字长应为23位,但综合考虑到后后期功能的拓展以及设计.上的便捷,所以我们决定将字长拓展至24位。
微指令格式如下所示:
5.5微程序编码设计
微指令中A、B、C三个字段的编码方案如下表:
其中,M23为补充位,无效,置为0;I0M位置0时为主存,置1时为I0外设;WR和RD置1时有效,置0时无效。
5.6微指令地址及控存存储器设计
首先确定取值过程中两条微指令在控存中地址,以及第二条指令的直接微地址。其次,在此模型机中,所有机器指令执行过程中第一条微指令所在的微地址由P<1>测试前的默认微地址和机器指令操作码经P<1>测试后决定;其次,执行过程中最后-条微指令的直接地址应该设为第-条取值微指令所在的微地址;然后,设置其余微指令所在的微地址,我们组采用的方法为对于每一道微程序,若不存在P<2>和P<3>测试,则入口地址从低到高从上向下为每条微指令分配微地址,因为下一条微指令的微地址即为上一条微指令的直接微地址,若存在P<2>或P<3>测试,则还应通过译码电路来求其后续微地址;最后,分配完微地址后,将所有微指令写入控存对应的位置中。对于控存的要求,控存的容量至少要等于所有微指令的个数,即控存的位数应大于等于直接微地址的位数。