使用Java实现简单的计算机案例

article/2025/6/24 11:53:58

使用Java实现简单的计算机案例

第一个案例我决定做一个简单的“简易计算器”,来开启编程之旅。为什么我会选择这个案例来作为第一个Java案例呢?大家可别小看这个小小的计算器,它既简单又实用。通过这个案例,大家可以学会或着练习如何处理用户输入、如何实现基本的逻辑运算,以及如何在控制台上输出结果。更重要的是,这个案例能够让你快速上手,在短时间内可以看到自己的成果,从而增强学习的信心和动力。无论你是编程新手,还是想要复习Java基础的开发者,都希望这篇文章能带给大家收获。

该文章的目录:

1. 设计的思路

2. 关键知识点

3. 完整代码

4. 测试和运行


原创-谷宇博客:谷宇-个人博客https://biguyu.top/home

一. 设计的思路

(1) 用户启动程序后,将看到一个菜单,可选择“1.启动计算机”进入计算器功能,或选择“0.退出”结束程序。选择“1”后,用户需依次输入两个数字(支持小数)和一个运算符(+、-、*、/),程序将根据输入执行相应运算并输出结果。若输入不符合要求,程序会提示错误信息。

(2) 程序分为两个主要部分: ① 主方法(main):负责显示菜单并根据用户选择调用计算方法。 ② 计算方法(count):负责接收用户输入的数字和运算符,并进行计算。

二. 关键知识点

(1) 打印:System.out.println();

(2) 变量的声明、赋值和使用。

(3) 创建Scanner对象,接收用户输入:Scanner input = new Scanner(http://System.in);

(4) 验证用户输入:hasNextInt()、hasNextFloat()和hasNext()。

(5) 简单运算符(+,-,*,/)的使用。

(6) 控制流语句if、if else和 else的使用。

三. 完整代码

package com.simple;import java.util.Scanner;
/*** 简易计算机* **/
public class Play {public static void main(String[] args) {//变量 i 用于保存菜单选项int i = 0;//打印第一级菜单System.out.print("----------------\n");System.out.println("1.启动计算机");System.out.println("0.退出");System.out.print("----------------\n");System.out.print("请输入编号:");//声明Scanner类,用于接收屏幕用户输入Scanner input = new Scanner(System.in);//判断用户输入的是否为整数(如果输入的非整数,变量会为数据类型的默认值。比如:int类型,用户输入‘f’,变量会赋值为默认值0)if(input.hasNextInt()) {//如果输入的是整数,赋值给 i 变量i = input.nextInt();if(i == 1) {//判断如果用户输入的是 1,则进入方法count();}} else {System.out.println("输入的不是整数!");}}//计算方法public static void count() {//声明浮点型,接收用户输入的第一个数。(使用浮点型是因为用户可能会输入小数)float a1 = 0.0f;//声明用户输入的第二个数float a2 = 0.0f;//声明用户输入的运算符号(+,-,*,/)char s;//保存计算的结果值float result = 0.0f;//创建Scanner类,接收用户的输入。System.out.print("请输入第一个数字:");Scanner inputA1 = new Scanner(System.in);//判断用户输入的是否为浮点型if(inputA1.hasNextFloat()){//接收用户输入的数字,保存到 a1 变量a1 = inputA1.nextFloat();} else {System.out.println("输入的不是浮点型!");}//同上System.out.print("请输入第二个数字:");Scanner inputA2 = new Scanner(System.in);if(inputA2.hasNextFloat()){//接收用户输入的数字,保存到 a2 变量a2 = inputA2.nextFloat();} else {System.out.println("输入的不是浮点型!");}//创建Scanner类,接收用户输入的运算符号。System.out.print("请输入运算符(+,-,*,/):");Scanner input = new Scanner(System.in);if(input.hasNext()) {//在scanner对象中,没有char单字符的输入,所以我们允许用户输入字符串,然后只获取字符串的第一个字符来进行比较s = input.next().charAt(0);//计算结果后,把结果保存到result变量if(s == '+') {result = a1 + a2;} else if(s == '-') {result = a1 - a2;} else if(s == '*') {result = a1 * a2;} else if(s == '/') {result = a1 / a2;} else {System.out.println("输入的运算符不正确");}//输出结果System.out.println("运算结果:" + result);} else {System.out.println("输入的不是字符串!");}}
}

四. 测试和运行

Java案例测试和运行成功,表明代码逻辑正确,功能实现符合预期


http://www.hkcw.cn/article/UGHsCrHvKt.shtml

相关文章

流媒体基础分析:延迟分析与安全性保障

在流媒体传输过程中,延迟和安全性是两个至关重要的方面。它们直接影响着用户的观看体验和内容的版权保护。本文将深入分析延迟的来源与追赶技术,并探讨流媒体传输的安全性保障手段。 1. 延迟分析 1.1 延迟说明 延迟是流媒体传输中不可避免的问题&#…

S32K3 工具篇9:如何在无源码情况下灵活调试elf文件

S32K3 工具篇9:如何在无源码情况下灵活调试elf文件 一,文档简介二, 功能实现2.1 代码工具准备2.2 elf修改功能实现:Fun2功能跳过2.2.1 PC越过Fun22.2.2 Fun2替换为nop 2.3 elf修改功能实现:Fun4替换Fun2入口2.3.1 link…

树莓派PWM控制LED灯

目录 一、什么是PWM二、树莓派引脚图三、命令行控制LED灯四、PWM控制LED呼吸灯 一、什么是PWM PWM(Pulse Width Modulation,脉冲宽度调制)是一种通过调节数字信号的占空比(Duty Cycle)来模拟模拟信号的技术。它通过快…

第十四章 MQTT订阅

系列文章目录 系列文章目录 第一章 总体概述 第二章 在实体机上安装ubuntu 第三章 Windows远程连接ubuntu 第四章 使用Docker安装和运行EMQX 第五章 Docker卸载EMQX 第六章 EMQX客户端MQTTX Desktop的安装与使用 第七章 EMQX客户端MQTTX CLI的安装与使用 第八章 Wireshark工具…

六.MySQL增删查改

CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除) 一.增 insert 1.单行数据 全列插入 语法特点:不指定字段名,按表结构字段顺序依次提供所有值。 注意:字段顺序必须与表定义一…

TKernel模块--自定义RTTI,对象句柄,引用计数

TKernel模块–RTTI,对象句柄,引用计数 1.DEFINE_STANDARD_HANDLE(x1, x2) #define DEFINE_STANDARD_HANDLE(C1,C2) DEFINE_STANDARD_HANDLECLASS(C1,C2,Standard_Transient)其中: #define DEFINE_STANDARD_HANDLECLASS(C1,C2,BC) class C1…

关于TongWeb数据源兼容mysql驱动的注意事项

问题现象: TongWeb数据源在采用mysql驱动的国产数据库时,因数据库慢报超时为数据源配置参数的 validation-query-timeout值5秒,而不是期望的maxwait、connectiontimeout值。 The last packet successfully received from the server was 5,0…

CSS专题之水平垂直居中

前言 石匠敲击石头的第 16 次 在日常开发中,经常会遇到水平垂直居中的布局,虽然现在基本上都用 Flex 可以轻松实现,但是在某些无法使用 Flex 的情况下,又应该如何让元素水平垂直居中呢?这也是一道面试的必考题&#xf…

(新)MQ高级-MQ的可靠性

消息到达MQ以后,如果MQ不能及时保存,也会导致消息丢失,所以MQ的可靠性也非常重要。 一、数据持久化 为了提升性能,默认情况下MQ的数据都是在内存存储的临时数据,重启后就会消失。为了保证数据的可靠性,必须…

Microsoft Word使用技巧分享(本科毕业论文版)

小铃铛最近终于完成了毕业答辩后空闲下来了,但是由于学校没有给出准确地参考模板,相信诸位朋友们也在调整排版时感到头疼,接下来小铃铛就自己使用到的一些排版技巧分享给大家。 注:以下某些设置是根据哈尔滨工业大学(威…

Linux 基础IO(上)

目录 前言 重谈文件 文件操作 1.打开和关闭 2.对文件打开之后操作 理解文件fd 1.文件fd的分配规则与重定向 2.理解shell中的重定向 3.关于Linux下一切皆文件 关于缓冲区 1.为什么要有缓冲区 2.缓冲区刷新策略的问题 3.缓冲区的位置 前言 本篇到了我们linux中的文件…

单板机8088C语言计划

计划将原来用汇编写的小程序,用C语言重新写一遍 计划2个月能完成 然后再试试,能不能用C写一下固件BootLoad 和一个类似Dos时代的Debug调试器

C++11 语法特性一文详解

文章目录 1. C11 的发展史2. 列表初始化2.1 C98 中使用 {} 的初始化2.2 C11 中使用 {} 进行初始化2.3 std::initializer_list (初始化列表) 3. 右值引用与移动语义3.1 左值与右值3.1.1 右值分类 3.2 左值引用与右值引用3.2.1 const 左值引用为什么可以绑…

linux基础

参考视频 文章目录 1.网络的三种链接方式2. 目录结构详解3. 远程登陆和远程文件传输4. vi和vim4.1 vi和vim的三种模式4.2 vim快捷键 5. 关机重启和登录注销5.1 关机重启5.2 登录注销 6. 用户管理6.1 添加和删除用户6.2 用户信息6.3 用户组 7. 实用指令7.1 运行级别7.2 找回root…

【MLLM】多模态LLM 2025上半年技术发展(Better、Faster、Stronger)

note 文章目录 note一、新模型趋势任意模态模型推理模型小巧但功能强大的模型专家混合解码器视觉-语言-行动模型 VLA 二、特殊能力视觉语言模型中的目标检测、分割和计数多模态安全模型多模态RAG:检索器和重排器 三、多模态代理四、视频语言模型五、视觉语言模型的新…

python从零开始实现四极场离子轨迹仿真——框架

本篇将主要讲解程序的框架部分。 该程序主要分为三个部分,首先是初始化部分,主要为设置离子质荷比、初始位置、速度。 其次为求解轨迹部分,通过离子位置获取对应位置的电场,并经由空间电荷效应修改电场后,通过数值求解…

YOLO系列中的C3模块解析2025.5.31

YOLO系列中的 C3模块 是YOLOv5引入的核心组件之一,其设计目标是通过轻量化结构和高效特征提取提升模型性能。以下是C3模块的详细解析: 一、C3模块的网络层级结构 C3模块(Cross Stage Partial Network with 3 convolutions)结合了…

在Cesium中通过geojson和3d tiles分别加载楼宇白膜

一、geojson渲染楼宇白膜&#xff08;不推荐&#xff09; 如果你没有3dtiles文件来加载白膜&#xff0c;只有geojson加载白膜可以通过GeoJsonDataSource来加载白膜&#xff0c;json格式如下。 实现代码如下 <template><div id"cesium_container"></…

CRISPR-Cas系统的小型化研究进展-文献精读137

Progress in the miniaturization of CRISPR-Cas systems CRISPR-Cas系统的小型化研究进展 摘要 CRISPR-Cas基因编辑技术由于其简便性和高效性&#xff0c;已被广泛应用于生物学、医学、农学等领域的基础与应用研究。目前广泛使用的Cas核酸酶均具有较大的分子量&#xff08;通…

【Web API系列】WebTransportSendStream接口深度解析:构建高性能实时数据传输的基石

前言 随着Web应用复杂度的不断提升&#xff0c;传统的HTTP协议在某些场景下&#xff08;如实时游戏、视频流传输&#xff09;逐渐暴露出性能瓶颈。为解决这一问题&#xff0c;W3C提出了WebTransport API&#xff0c;旨在通过基于QUIC协议的低延迟、多路复用传输机制优化实时通…