当前位置: 首页 > 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.xdnf.cn/news/1271341.html

相关文章:

  • Python(6) -- 数据容器
  • I2CHAL库接口
  • MCU-基于TC397的启动流程
  • nginx高性能web服务器
  • BroadcastChannel:轻松实现前端跨页面通信
  • 使用 Ansys Discovery 进行动态设计和分析
  • ​​​​​​​【Datawhale AI夏令营】多模态RAG财报问答挑战赛:学习笔记与上分思考
  • Java基础-完成局域网内沟通软件的开发
  • B.10.01.5-电商系统的设计模式应用实战
  • Day 8: 深度学习综合实战与进阶技术 - 从优化到部署的完整流程
  • 【Datawhale AI夏令营】从Baseline到SOTA:深度剖析金融问答RAG管道优化之路
  • Mybatis进阶
  • 机器学习第七课之支持向量机SVM
  • 本地进行语音文字互转
  • P1890 gcd区间
  • C++11中的移动语义
  • 【无标题】AI 赋能日常效率:实用案例与操作心得分享
  • B.10.01.6-DDD领域驱动设计:从理论到落地的完整指南
  • 数据挖掘2.6 Perceptron Modeling 感知器建模
  • Qdrant Filtering:must / should / must_not 全解析(含 Python 实操)
  • 心灵笔记:正念冥想
  • 解决python错误:playwright._impl._errors.TimeoutError: Timeout 30000ms exceeded.
  • 3.5.2_1 随机访问介质访问控制
  • Python中的Lambda函数详解
  • 【排序算法】④堆排序
  • NTP /Chrony 网络时间协议
  • Leetcode-19. 删除链表的倒数第 N 个结点
  • 比较useCallback、useMemo 和 React.memo
  • 机器学习 K-Means聚类 无监督学习
  • 第4章 程序段的反复执行for语句P115练习题(题及答案)