题目描述
描述:
输入一个整数,将这个整数以字符串的形式逆序输出
程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001
输入描述:
输入一个int整数
输出描述:
将这个整数以字符串的形式逆序输出
输入例子:
1516000
输出例子:
0006151
我觉得题目不难,我做的方法是不是不太好?感觉不精练。
但是我又想到,题目说了要是字符串的形式逆序,如果不要求字符串的话,应该直接每次while都print一个数字,代码会更简洁吧。
然后过程中还是出了两个小错误:
1、
while(flag){
st.add(""+i%10);
i=i/10;
if(i==0){
flag=false;
}
}
这个flag的判断一定要在i=i/10;之后,不然就会多一个0,别问我怎么知道的....
2、
/* for(int j=st.size()-1;j>=0;j--){
re=re+st.get(j);
}*/
for(int j=0;j<=st.size()-1;j++){
re=re+st.get(j);
}
因为添加的时候就是逆序了,所以不要倒序输出啦!! 【咦这里是不是其实可以直接处理String.....0.0】
import java.util.Scanner;
import java.util.ArrayList;
public class Main{
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
long num=sc.nextInt();
System.out.println(Fun(num));
}
public static String Fun(long num){
String re="";
long i=num;
ArrayList<String> st=new ArrayList<String>();
boolean flag=true;
while(flag){
st.add(""+i%10);
i=i/10;
if(i==0){
flag=false;
}
}
/* for(int j=st.size()-1;j>=0;j--){
re=re+st.get(j);
}*/
for(int j=0;j<=st.size()-1;j++){
re=re+st.get(j);
}
return re;
}
}
走,看看大神怎么做的:
1、用StringBuffer.....哎..!!
链接:https://www.nowcoder.com/questionTerminal/ae809795fca34687a48b172186e3dafe
来源:牛客网
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
String str = scan.nextLine();
StringBuffer sb = new StringBuffer(str);
sb.reverse();
System.out.println(sb.toString());
}
}
2、跟我想法差不多的简洁版:
链接:https://www.nowcoder.com/questionTerminal/ae809795fca34687a48b172186e3dafe
来源:牛客网
import java.util.*;
public class Main{
public static void main(String []args){
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int i=0;
String res="";
while(num!=0){
int t1=num%10;
int t2=num/10;
res=res+String.valueOf(t1);
i++;
num=t2;
}
System.out.println(res);
}
}