当前位置: 首页 > news >正文

java练习题:数字位数

在之前写了6:java学习笔记:for循环与if条件语句的结合-CSDN博客

水仙花数 是只有三位数的,通过三次for循环的嵌套来进行,然后使用 if条件语句的结合 来进行判断的。

但是如果没有前置条件,只告诉你输入一个数字判断是不是水仙花数,那么这个题目的算法就要进行改变了。

写一段代码,基本上分为三个步骤,分别是 用户交互部分(输入(本质上是数据获取,可以是用户输入,也可以是很多表格数据等等),输出(可以是单纯的输出,也可以是数据库写入等等都属于这个范畴),同样还有渲染之类的现在并不考虑),算法部分(有些代码是用来业务逻辑/数据处理等等的)与异常捕获部分

所以现在的算法应该改变了

先进行用户交互的部分

这个是导图,用户交互中可以分为 输入,输出,渲染,接口调用等等,后面两个在本例子中不需要使用,在输入中,在本例子中是需要用户直接输入的,不是通过文件/网络等等输入的,所以直接使用scanner直接输入就可以了。

然后在输出中在这个例子中只需要显示出结果让用户清楚就可以,所以有两种输出,第一种是是水仙花数,第二是不是水仙花数。

这里有分类讨论,所以需要使用到if条件语句。

难点:随机输入一个数字需要知道是几位数,还要提取出来

这个是算法部分的(主体部分)

通过num(用户输入的)%10 获得位数,通过位数三次方,得到第一个,然后呢num/10,去掉个位数,循环之后得到sum就是每一位三次方的总和 如果能等于数字本身,那么就是水仙花数,如果不行的,那么就不是水仙花数。

基本的难点就已经完结了

但是在三位数中式三次方,四位数就是四次方,这个是第二个难点,不知道位数

那么最后就是异常捕获,思考一下可能产生的异常有

这三个。

第一个异常

第二个异常

第三个异常

这三种类型的异常

最后的代码是

import java.util.Scanner;
public class s1 {public static void main(String[] args) {// TODO Auto-generated method stubScanner input = new Scanner(System.in);System.out.println("请输入一个数字");//用户交互,基本输入double sum = 0;if(input.hasNextInt()) {//异常捕获2,不能是小数int number = input.nextInt();int num4= number;//因为要用到两次 最后需要比较的时候,需要保护一下int num3 =number;int i =0; //记录到底有几位数字if(number<0) {//异常捕获1 如果是负数怎么办呢,如果是负数,直接退出程序!!System.out.println("负数不会是水仙花数的");return;}while(number>0) {//问题2的解决i++;number= number/10;}while(num4>0) {//最重要的算法,并且是循环模块 问题1的解决 int num = num4%10;sum+=Math.pow(num,i);num4 = num4 / 10;}System.out.println(sum);if(sum==num3) {//因为需要分类讨论,所以使用if条件语句,用户交互,直接打印结果System.out.println("是水仙花数");}else {System.out.println("不是水仙花数");}}}}

导图的链接在。

HeptabaseCreate visual playgrounds for your notes.https://app.heptabase.com/w/d0a628a46a5385f87b292bfbcf1335152bf105eea5bc7417c3a122528e46449c

http://www.dtcms.com/a/323557.html

相关文章:

  • Windows下使用PyInstaller打包PyQt项目
  • 第15届蓝桥杯Scratch图形化省赛中级组2024年8月24日真题
  • 4深度学习Pytorch-神经网络--损失函数(sigmoid、Tanh、ReLU、LReLu、softmax)
  • Linux-JSON Schema
  • Java类和对象课上练习题目设计
  • LLM 的向量的方向表示语义,向量长度表示什么
  • Docker容器lnmp平台部署discuz论坛
  • 工具类-高效集合差异计算工具DiffWrapper
  • visual studio 无明显错误,但是无法编译成功解决—仙盟创梦IDE
  • C++入门自学Day7-- String类的自实现
  • Adapting Vision-Language Models Without Labels A Comprehensive Survey
  • RWKV与VRWKV
  • Filter,Interceptor拦截器-登录校验
  • visual studio 字体设置
  • 【小米比笔记本Pro15.6】>>Stasrt PXE over IPv6,Press [Esc] to EXIT...
  • 第二十天:余数相同问题
  • 信息安全简要
  • 分布式锁详解及 Spring Boot 实战示例
  • Redis 持久化策略深度剖析:从原理到实战,守护数据不丢失
  • 基于 InfluxDB 的服务器性能监控系统实战(二)
  • [论文阅读] 人工智能 + 软件工程 | Posterior-GRPO:优化代码生成推理过程的新框架
  • Solana上Launchpad混战:新颖性应被重视
  • 云服务器--阿里云OSS(1)【阿里云OSS简单介绍以及环境准备】
  • 论文学习21:Pyramid Scene Parsing Network
  • AG32cpld实现一个UartTx“外设”
  • 莫比乌斯反演学习笔记
  • Qt 元对象系统中的 QMetaObject 类和他的invokeMethod() 函数及其他常见函数应用详解​
  • MoVA:多模态视觉专家混合架构的创新设计与应用实践
  • 【能碳建设2】把“能碳计算”做成可配置、可演示的系统
  • codeforces 补题1