当前位置: 代码迷 >> java >> 不应分配参数“num”(错误)
  详细解决方案

不应分配参数“num”(错误)

热度:43   发布时间:2023-07-16 17:31:18.0

我是一名新的 Java 编码员,遇到一个关于回文的教程,它给了我一个错误“不应在突出显示的第 16 行中分配参数‘num’。

任何人都可以看看并提供一些有关导致此错误的原因的见解吗?

程序运行正常。 但我对此很好奇。

非常感谢! (见下面的代码)

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 }

它告诉您重新分配参数是不好的做法。

可以说,这是正确的。 在某些情况下,重新分配参数会使调试稍微困难一些,因为在循环迭代之后,由于覆盖了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永远不会改变。

但是不,这不是一个实际的错误。 它只是告诉您它认为什么是最佳实践。

num 变量的类型是 final,在 java 中,这意味着变量的值不能改变。 我想这就是错误的原因。

维基百科:在 Java 编程语言中,final 关键字在多个上下文中用于定义一个只能分配一次的实体。

  相关解决方案