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

相关文章:

  • 【Java基础】字符串不可变性、string的intern原理
  • C++11 ---- 线程库
  • 3.2Vue Router路由导航
  • B.10.01.3-性能优化实战:从JVM到数据库的全链路优化
  • 区块链密码学简介
  • (LeetCode 每日一题) 231. 2 的幂 (位运算)
  • 基于clodop和Chrome原生打印的标签实现方法与性能对比
  • 通过 SCP 和 LXD 配置迁移 CUDA 环境至共享(笔记)
  • 数据标准化与归一化的区别与应用场景
  • FAN5622SX 四通道六通道电流吸收线性LED驱动器,单线数字接口 数字式调光, 2.7 → 5.5 V 直流直流输入, 30mA输出FAN5622S
  • C++ unordered_map 和 unordered_set 的使用
  • 新手向:Python开发简易待办事项应用
  • 【JS-8-Json】深入理解JSON语法及Java中的JSON操作
  • Visual Studio Code (v1.103) 中 GitHub Copilot 最新更新!
  • [TryHackMe]Challenges---Game Zone游戏区
  • 避不开的数据拷贝(2)
  • 第二十天:数论度量
  • 【面试场景题】通过LinkedHashMap来实现LRU与LFU
  • C++隐式转换的魔法与陷阱:explicit关键字的救赎
  • 软件工程总体设计:从抽象到具体的系统构建之道
  • Python基础教程(六)条件判断:引爆思维Python条件判断的九层境界
  • 轻量化阅读应用实践:21MB无广告电子书阅读器测评
  • MySQL(188)如何使用MySQL的慢查询工具?
  • Spring Boot 2 集成 Redis 集群详解
  • 聊聊经常用的微服务
  • MBR分区nvme固态硬盘安装win7--非UEFI启动和GPT分区
  • day30-HTTP
  • 大语言模型提示工程与应用:LLMs文本生成与数据标注实践
  • 在Docker中下载RabbitMQ(详细讲解参数)
  • docker基础前置