我是Java的新编码员,遇到了有关回文式的教程,该教程给我一个错误:“参数'num'不应在突出显示的第16行中分配。
任何人都可以看看并提供导致此错误的原因的一些见解吗?
程序正常运行。但是我对此很好奇。
非常感谢! (请参见下面的代码)
1 package javaTutorial;
2
3 public class IsPalindrome {
4
5 final static int num = 12321;
6
7 public static void main(String[] args) {
8 System.out.println(is_Palindrome(num));
9 }
10
11 public static int reverse(int num) {
12 int rev_num = 0;
13 while (num > 0) {
14 int r = num % 10;
15 rev_num = rev_num * 10 + r;
16 num /= 10; ************* ERROR
17 }
18 return rev_num;
19 }
20
21 public static boolean is_Palindrome(int num) {
22 if (num == reverse(num))
23 return true;
24 return false;
25 }
26 }
答案 0 :(得分:0)
这告诉您重新分配参数是不明智的做法。
可以说是正确的。在某些情况下,重新分配参数会使调试稍微困难一些,因为在循环迭代之后,由于覆盖了num
,因此您将无法查看最初将哪些数据传递给函数。要解决此问题,请创建一个您重新分配的辅助变量:
public static int reverse(int num) {
int rev_num = 0;
int acc_num = num; // Here
while (acc_num > 0) { //The use it instead
int r = acc_num % 10;
rev_num = rev_num * 10 + r;
acc_num /= 10;
}
return rev_num;
}
请注意num
永远不会改变。
但是,这不是实际错误。只是告诉您什么是最佳做法。
答案 1 :(得分:-1)
您的num变量的类型是最终的,在Java中,这意味着不能更改变量的值。我想这就是错误的原因。
维基百科: 在Java编程语言中,final关键字在多个上下文中用于定义只能分配一次的实体。