题目描述
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。
输入格式
一个整数 N
输出格式
一个整数,表示反转后的新数。
输入输出样例
输入 #1
123
输出 #1
321
输入 #2
-380
输出 #2
-83
说明/提示
数据范围
−1,000,000,000≤N≤1,000,000,000
noip2011普及组第一题
思路:
- 先用一个中间变量T来存储N的值,因为后面需要根据输入的N值得正负来决定输出的形式
- 用while循环来分离多位数
- 用了ArrayList将模后的数存下来(用数组也可)
- 输出时要判断所得的ArrayList中前面的数(即反转后的高位)是否为0;不为0之后的才可以依次输出
- 最后根据T来判断输出是否需要带负号
代码实现:
package qwx.luogu;
import java.util.ArrayList;
import java.util.Scanner;
public class p1307 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int t=n;//中间变量T
ArrayList<Integer> list=new ArrayList<>();
while (n!=0){
int a=Math.abs(n%10);
n/=10;
list.add(a);//添加存储
}
for(int i=0;i< list.size();i++){
if (list.get(i) !=0){
if (t>=0)
for (int j=i;j< list.size();j++)
System.out.print(list.get(j));
else {
System.out.print("-");
for (int j=i;j< list.size();j++)
System.out.print(list.get(j));
}
break;
}
}
}
}