reverse number

本文介绍了一种用于翻转32位有符号整数的算法,并提供了完整的C++实现代码。该算法考虑了整数溢出的情况,当翻转后的整数超出32位有符号整数范围时返回0。

Reverse digits of an integer.

Example1: x = 123, return 321
Example2: x = -123, return -321

Note:
The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.


#include <iostream>

using namespace std;
#define INT_MAX (32767)
#define INT_MIN (-INT_MAX-1)
class solution
{
public:
int reverse(int&num)
{
long long res = 0;
while (num)
{
res = res * 10 + num % 10;
num = num / 10;
}
return (res<INT_MIN || res>INT_MAX) ? 0 : res;
}
};
int main()
{
int num=0;
int re=0;
cout << "please input integernumber:" << endl;
cin >> num;
solution s;
re=s.reverse(num);
cout << re;
}
你遇到的这个错误: ``` Main.java:3: error: class ReverseNumber is public, should be declared in a file named ReverseNumber.java public class ReverseNumber { ^ 1 error ``` 是因为 **Java 的命名规则限制**: > 如果一个类被声明为 `public`,那么它所在的 `.java` 文件名必须与该类名完全一致(包括大小写)。 --- ### ❌ 错误原因: 你把 `public class ReverseNumber` 放在了一个名为 `Main.java` 的文件中,而 Java 编译器要求这个类必须放在名为 **`ReverseNumber.java`** 的文件中。 --- ### ✅ 解决方案: #### ✅ 方法一:修改文件名为 `ReverseNumber.java`(推荐) 将你的源代码保存为 **`ReverseNumber.java`**,内容保持不变: ```java import java.util.Scanner; public class ReverseNumber { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int m = reverseNumber(n); System.out.println(m); scanner.close(); } public static int reverseNumber(int n) { boolean isNegative = n < 0; n = Math.abs(n); long reversed = 0; while (n != 0) { int digit = n % 10; reversed = reversed * 10 + digit; n /= 10; } if (isNegative) { reversed = -reversed; } if (reversed > Integer.MAX_VALUE || reversed < Integer.MIN_VALUE) { return 0; } return (int) reversed; } } ``` 然后编译运行: ```bash javac ReverseNumber.java java ReverseNumber ``` ✅ 这样就不会报错了。 --- #### ✅ 方法二:不改文件名,但去掉 `public` 修饰符(适用于在线 OJ 平台) 有些在线编程平台(如牛客网、LeetCode、PAT 等)只允许提交一个 `Main` 类,并且入口类必须叫 `Main`,此时你可以: - 把类名改为 `Main` - 去掉 `public` 或保留 `public class Main` 修改后代码如下(保存为 `Main.java`): ```java import java.util.Scanner; class ReverseNumber { // 辅助类不再用 public public static int reverseNumber(int n) { boolean isNegative = n < 0; n = Math.abs(n); long reversed = 0; while (n != 0) { int digit = n % 10; reversed = reversed * 10 + digit; n /= 10; } if (isNegative) { reversed = -reversed; } if (reversed > Integer.MAX_VALUE || reversed < Integer.MIN_VALUE) { return 0; } return (int) reversed; } } public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int m = ReverseNumber.reverseNumber(n); System.out.println(m); scanner.close(); } } ``` 这样就可以在 `Main.java` 中正常编译和运行了。 --- ### 总结 | 情况 | 解决方法 | |------|----------| | 本地开发 / 学习 | 将 `public class ReverseNumber` 保存为 `ReverseNumber.java` | | 在线评测系统(OJ) | 使用 `public class Main`,其他类不用 `public` 或合并 | ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值