4.数字反转问题:
对于一个整数X,定义操作rev(X)为将X按数位翻转过来,并且去除掉前导0。例如:
如果 X = 123,则rev(X) = 321;
如果 X = 100,则rev(X) = 1.
现在给出整数x和y,要求rev(rev(x)+ rev(y))为多少?
代码:(1)方法一;定义一个ArrayList,然后把反转之后的各个数add进入list里面。
public class reverse {
publicstatic void main(String []args)
{ Scanner scanner=new Scanner(System.in);
intone=scanner.nextInt();
inttwo=scanner.nextInt();
System.out.println(Reverse(one));
System.out.println(Reverse(two));
//intb=Reverse(Reverse(one)+Reverse(two));
intb=Reverse(one)+Reverse(two);
intc=Reverse(b);
System.out.println(b);
System.out.println(c);
}
publicstatic int Reverse(int x ){
intresult=0;
ArrayList<Integer>a=new ArrayList<>();
//把数单个蹦以下,写在数组中
while(x>0)
{//取个位数,每次只是加入
a.add(x%10);
//取剩余的几位数,先加个位,在加10位,在加。。。
x=x/10;
}
//此处是要把每一个数,进行组合起来了
for(inti=0;i<a.size();i++){
result=(int)(result+a.get(i)*Math.pow(10,a.size()-i-1));//pow函数是变为10的多少次方
}
returnresult;
}
}
解法2:直接使用数的规律进行;
public classreverse {
public static int resource(int x){
long z = x;
long sum = 0;
while(z!=0){
sum = sum*10+z%10; //重点还是搁这里。。。
z = z/10;
}
return (int)sum;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
System.out.println(resource(resource(sc.nextInt())+resource(sc.nextInt())));
}
}
}
一堆数字,需要将数字转化为String类型时候=====将字符串类型转化为字符数组
Stringfirst = String.valueOf(firsti);
String second = String.valueOf(secondi);
char[]firstC = first.toCharArray();
char[]secondC = second.toCharArray();
附加的练习一下:
public static void main(String[] args) {
int i=132;
String s=String.valueOf(i);
char []a=s.toCharArray();
for(int j=0;j<a.length;j++){
System.out.print(a[j]);
}
}