标签:负数 ase class 反转 val src catch valueof 处理
题目:
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123 输出: 321
示例 2:
输入: -123 输出: -321
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [?2^31, 2^31 ? 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
思路:可以把这个整数先取绝对值,然后转换为字符数组,逆序输出,判断输出后的值是否超出范围,若超出范围再做溢出处理,没有超出范围,如果输入的数是正数,就返回正数,如果输入的数是负数,逆序输出的值加上负号即可。此思路需要掌握的知识点:1.整数取绝对值,Math.abs(int);2.StringBuffer字符追加;3.整数转换为String类:String.valueOf(int);4.String类转换为char[]:char[] ch=s.toCharArray();5.StringBuffer类转换为String类:buf.toString();6.String类转换为int类型:Integer.parseInt(str);此时会出现NumberFormatException异常,所以记得抛出一下。6.另外,数值范围的表示,要知道怎么表示数字在 [?2^31, 2^31 ? 1]它之间。
代码:
1 class Solution { 2 public int reverse(int x) { 3 StringBuffer buf=new StringBuffer(); 4 if(x>-2147483648||x<2147483647){ 5 int y=Math.abs(x); 6 String s=String.valueOf(y); 7 char[] ch=s.toCharArray(); 8 for(int i=ch.length-1;i>=0;i--){ 9 buf.append(ch[i]); 10 } 11 String str=buf.toString(); 12 try{ 13 int num=Integer.parseInt(str); 14 if(x>=0) 15 x=num; 16 if(x<0) 17 x=-num; 18 return x; 19 }catch(NumberFormatException e){ 20 System.out.println("NumberFormatException!please input the integer again!"); 21 return 0; 22 } 23 }else{ 24 return 0; 25 } 26 } 27 }
标签:负数 ase class 反转 val src catch valueof 处理
原文地址:https://www.cnblogs.com/xiayanjiao/p/10269307.html