数字颠倒

题目描述:

输入一个整数,将这个整数以字符串的形式逆序输出

程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001

思路1:使用Scanner的next()方法以字符串形式接收从键盘输入的数字;然后把字符串转为字节(字符数组也可以)数组;计算字节数组长度,把最后位置字节放到第一个位置,循环条件是为,length为字节数组长度(length-1)/2;然后把字节数组转为字符串进行输出(若是字符数组则无需转换,直接输出即可)。

代码1:转为字节数组

 1 import java.util.Scanner;
 2 
 3 public class Inverse1 {
 4 
 5     /**输入一个整数,将这个整数以字符串的形式逆序输出
 6      * @param args
 7      */
 8     public static void main(String[] args) {
 9         Scanner sc =new Scanner(System.in);
10 //System.out.println("请输入一个整数");
11         String s=sc.next();
12         inverse(s);
13     }
14     
15     public static void inverse(String s){
16         byte[] b=s.getBytes();
17         int l=b.length;
18         for(int j=0;j<=(l-1)/2;j++){
19                 byte temp=b[j];
20                 b[j]=b[l-1-j];
21                 b[l-1-j]=temp;
22             }
23         String s1= new String(b);
24         System.out.println(s1);
25     }
26     
27 }

代码2:转为字符数组

 1 import java.util.Scanner;
 2 
 3 public class Inverse4 {
 4     public static void main(String[] args){
 5         Scanner sc = new Scanner(System.in);
 6         String s = sc.next();
 7         char[] c = s.toCharArray();
 8         int l=c.length;
 9         for(int j=0;j<=(l-1)/2;j++){
10                 char temp=c[j];
11                 c[j]=c[l-1-j];
12                 c[l-1-j]=temp;
13             }
14             System.out.print(c);
15     }
16 }

思路2:利用常规方法分别计算出每一位的数字,并把每一位数字存储到整形数组中,然后输出

 1 package com.zbt.huawei;
 2 
 3 import java.util.Scanner;
 4 
 5 public class Inverse2 {
 6 
 7     /**
 8      * @param args
 9      */
10     public static void main(String[] args) {
11         Scanner sc = new Scanner(System.in);
12 // System.out.println("请输入一个整数");
13         int n = sc.nextInt();
14         inverse2(n);
15     }
16 
17     public static void inverse2(int n) {
18         int i=0;
19         int k=0;
20         int[] s=new int[100];
21         if(n==0){
22             System.out.println(n);
23         }
24         while((n/10 !=0) || (n%10 !=0) ){//这里判断条件其实就是n!=0
25         k=n%10;
26         s[i]=k;
27         n=n/10;
28         i++;
29         }
30             
31         for(int j=0;j<i;j++){
32             System.out.print(s[j]);
33         }
34     }
35 }

思路3:利用java的StringBuffer存储输入数字(以字符串形式接收输入的数字),然互利用reverse()方法,直接输出

 1 package com.zbt.huawei;
 2 
 3 import java.util.Scanner;
 4 
 5 public class Inverse3 {
 6 
 7     /**
 8      * @param args
 9      */
10     public static void main(String[] args) {
11         // TODO Auto-generated method stub
12         Scanner sc  = new Scanner(System.in);
13         String s = sc.next();
14         StringBuffer sb = new StringBuffer(s);
15         System.out.println(sb.reverse());
16         
17     }
18     
19 }
原文地址:https://www.cnblogs.com/crazybuddy/p/5303981.html