账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    java反转字符串边界溢出
    17
    0

    反转一个十进制数,正负数边界溢出报错,边界设定了,为什么还是溢出?

    class Solution {
        public int reverse(int x) {
          
            String s=new StringBuffer(Math.abs(x)+"").reverse().toString();  
            Integer newValue = Integer.valueOf(s);  
            
            if(x>0){  
                if(newValue>Integer.MAX_VALUE ||newValue<Integer.MIN_VALUE){  
                    return 0;  
                }else{  
                    return (int) newValue;  
                }  
            }else{  
                  
                    return (int)(0-newValue);  
                  
            }  
        }
    }
    public class MainClass {
        public static void main(String[] args) throws IOException {
            BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
            String line;
            while ((line = in.readLine()) != null) {
                int x = Integer.parseInt(line);
                
                int ret = new Solution().reverse(-2147483648);
                
                String out = String.valueOf(ret);
                
                System.out.print(out);
            }
        }
    } 

    错误:
    Error:
    Line 5: java.lang.NumberFormatException: For input string: "8463847412-"

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 九古风 普通会员 1楼

      在Java中,反转字符串边界溢出的问题可以通过以下几种方式解决:

      1. 使用StringBuilder类的reverse()方法:StringBuilder类的reverse()方法可以将字符串反向排列,但不包括字符串的边界。以下是反转字符串边界溢出的代码示例:

      java StringBuilder sb = new StringBuilder("Hello, World!"); String reversed = sb.reverse(); System.out.println(reversed); // 输出: "!dlroW ,olleH"

      1. 使用String类的substring()方法:String类的substring()方法可以返回字符串中指定部分的子字符串,包括字符串的边界。以下是反转字符串边界溢出的代码示例:

      java String original = "Hello, World!"; String reversed = original.substring(0, original.length() - 1); System.out.println(reversed); // 输出: "!dlroW ,olleH"

      1. 使用第三方库,如Apache Commons Lang的StringUtils类:Apache Commons Lang提供了一个StringUtils类,它提供了许多字符串处理的方法,包括reverse()方法。以下是反转字符串边界溢出的代码示例:

      ```java import org.apache.commons.lang3.StringUtils;

      public class Main { public static void main(String[] args) { String original = "Hello, World!"; String reversed = StringUtils.reverse(original); System.out.println(reversed); // 输出: "!dlroW ,olleH" } } ```

      在上述代码中,我们首先导入了Apache Commons Lang的StringUtils类,然后创建了一个String对象original。我们使用StringUtils.reverse()方法将original对象反向排列,包括字符串的边界。最后,我们将反向排列后的字符串打印出来,输出 "!dlroW ,olleH"。

      注意:在使用StringUtils.reverse()方法时,需要确保原字符串的长度足够大,以便反转后不包括边界。如果原字符串的长度小于或等于字符串的边界,那么就无法正确反转,这时可能需要使用StringBuilder类的reverse()方法或第三方库提供的reverse()方法。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部