宗毅,这个公主会魔法,武昌分校教务系统
能解决题目的代码并不是一次就可以写好的
我们需要根据我们的思路写出后通过debug模式找到不足再进行更改
多次测试后才可得到能解决题目的代码!
通过学习,练习【java基础经典练习题】,让我们一起来培养这种解决问题思路。
【如何获取一个正整数的每一位】以及【如何使用键盘输入】点击这里复习
a1: 如:12321,
即将这个数的数字按相反的顺序重新排列后,所得到的数和原来的数一样。
【正着读是12321,反着读也是12321】
对于5位数的回文数来说就是【个位和万位相同】,【十位和千位相同】 所以可以根据这个条件来判断一个数是否为回文数
a2: 第四题我们已经对这个问题具体讲解过了~
点击下面的链接就可以看到第四题。
【如何获取一个正整数的每一位】以及【如何使用键盘输入】点击这里复习
这里小乔就给大家复习一下获取一个数的每一位的规律:
先用输入的正整数num与10取余,
再将输入的正整数num与10相除,得到的结果仍保存在num中
即num=num/10
我们可以看到:
最后一次循环被除数为1,此时每一位都已被取出。所以被除数大于0
package exercise; import java.util.scanner; public class huiwen { public static void main(string[] args) { int num, num1 = 0; int i = 0; int yu = 0;// 将取出的每一位数保存在变量yu中 scanner sc = new scanner(system.in); system.out.println("请输入一个五位数"); num = sc.nextint();// 将键盘输入的数存入变量num中 int arr[] = new int[5];// 因为输入的是5位数,所以数组长度为5 num1 = num;// 把num的值赋给num1 /* * 思路:输入的正整数num与10取余, 再将输入的正整数num与10相除, 相除后的结果仍保存在num中,即num=num/10 */ while (num1 > 0 && i < arr.length) {// 用num1的值做判断,num在下面输出语句中使用。 yu = num1 % 10;// 取出的每一位保存在变量yu中 arr[i] = yu;// 将yu的值赋给arr[i] num1 = num1 / 10;// 为取出下一位数做准备 i++;// 数组的索引i需要+1,如果不+1那么原来放入的数就会被新放入的数代替,即循环过后只有arr[0]是有值的 } if (arr[0] == arr[4] && arr[1] == arr[3]) {// 如果个位和万位相等并且十位和千位相等(两个条件都要满足),此数为回文数 system.out.println(num + "是回文数");// 如果此处写的是num1,输出的就是0。并不是我们通过键盘输入的数 } else {// 否则,就不是回文数 system.out.println(num + "不是回文数"); } } }
num=12321,num1=num=12321(用num1>0&&i<arr.length作为while循环的条件)
i=0 (数组arr的下标,因为arr.length=5,所以arr的下标范围【0-4】)
yu=0(将取出的每一位数保存在变量yu中)
创建一个数组arr ,长度为5,因为我们输入的是5位数
int arr[] = new int[5];
while (num1 > 0 && i < arr.length) {// 用num1的值做判断,num在下面输出语句中使用。 yu = num1 % 10;// 取出的每一位保存在变量yu中 arr[i] = yu;// 将yu的值赋给arr[i] num1 = num1 / 10;// 为取出下一位数做准备 i++;// 数组的索引i需要+1,如果不+1那么原来放入的数就会被新放入的数代替,即循环过后只有arr[0]是有值的 }
(1) num1=12321,i=0 满足num1 > 0 && i < arr.length,进入while循环
(2) num1=1232,i=1 满足num1 > 0 && i < arr.length,进入while循环
(3) num1=123,i=2 满足num1 > 0 && i < arr.length,进入while循环
(4) num1=12,i=3 满足num1 > 0 && i < arr.length,进入while循环
(5) num1=1,i=4满足num1 > 0 && i < arr.length,进入while循环
(6) num=0,i=5不满足num1 > 0 && i < arr.length,退出while循环
if (arr[0] == arr[4] && arr[1] == arr[3]) {// 如果个位和万位相等并且十位和千位相等(两个条件都要满足),此数为回文数 system.out.println(num + "是回文数");// 如果此处写的是num1,输出的就是0。并不是我们通过键盘输入的数 } else {// 否则,就不是回文数 system.out.println(num+ "不是回文数"); }
(1) 因为此处arr[0]arr[4]&&arr[1]arr[3]成立
(2) 所以输出12321是回文数
注意:此处要用num输出。如果此处写的是num1,输出的就是0。
欢迎大家来公号
“小乔的编程内容分享站” 来找小乔玩~
一起学习java基础+算法~
还有更多资源等你来拿哦~
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
浅析我对 String、StringBuilder、StringBuffer 的理解
使用IDEA搭建SSM框架的详细教程(spring + springMVC +MyBatis)
Springboot整合freemarker 404问题解决方案
引入mybatis-plus报 Invalid bound statement错误问题的解决方法
网友评论