赞
踩
今天在做回文数的习题时,遇到了怎么把数字反转的问题,在一番研究之后,习得了以下两种方法。
1、对数字取末位再乘10
- package day6;
-
- import java.util.Scanner;
-
- public class NumberReverse {
- public static void main(String[] args) {
- Scanner sc=new Scanner(System.in);
- System.out.println("请输入一个整数");
- int num=sc.nextInt();
- int b=0;
- while(num!=0){
- int a=num%10;//每次取个位
- b=b*10+a;//翻转
- num=num/10;//去掉末位
- }
- System.out.println(b);
- }
- }
2.使用字符串反转拼接的方法来实现整数反转
- package day6;
-
- import java.util.Scanner;
-
- public class fanzhuan2 {
- public static void main(String[] args) {
- // 输入一个数字
- Scanner sc = new Scanner(System.in);
- int x = sc.nextInt();
-
- // 返回反转后的数字
- System.out.println(reverse(x));
- sc.close();
- }
-
- public static int reverse(int x) {
- // 将整数转换成字符串
- String str = Integer.toString(x);
- // 将字符串转换成字符数组
- char[] num = str.toCharArray();
- // 数组初始值下标
- int minIndex = 0;
- // 数组长度(最大下标)
- int maxIndex = str.length();
- // 用字符串缓冲类来拼接字符串
- StringBuffer sBuffer = new StringBuffer();
-
- // 查看这个数是不是复数,是就初始下标+1
- if (num[0] == '-') {
- minIndex++;
- }
-
- // 查看这个数最后位数是不是零,是就去掉,上限-1
- while (num[--maxIndex] == '0' && maxIndex > 1) {
- }
-
- // 字符串的拼接
- for (int i = maxIndex; i >= minIndex; i--) {
- sBuffer.append(num[i]);
- }
- // 用try 查看是否报错,报错就说明将字符串转换后的数字超出整形界限 2^31-1(2147483647) 和 -2^31(-2147483648)
- try {
- // 查看初始值是否是零,来判断是否是复数
- return minIndex == 0 ? Integer.valueOf(sBuffer.toString()) : -Integer.valueOf(sBuffer.toString());
- } catch (Exception e) {
- return 0;
- }
-
- }
-
- }
后来在高人指点下,发现在StringBuilder类中的reverse()方法就能实现反转。
- package day6;
- public class fanzhuan3 {
- public static void main(String[] args) {
- int a=7412;
- String s = String.valueOf(a);
- StringBuilder stringBuilder = new StringBuilder(s);
- System.out.println(stringBuilder.reverse());
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。