【问题标题】:Cannot find symbol Java error?找不到符号 Java 错误?
【发布时间】:2013-05-20 11:39:45
【问题描述】:

当我使用 java.util.Arrays.sort(numbers); 时,该代码有效 难道我做错了什么?这对我来说似乎很奇怪。

import java.util.Arrays.*;

class Test {
   public static void main(String[] args) {
    double[] numbers = {6.0, 4.4, 1.9, 2.9, 3.4, 3.5};
    char[] chars = {'a', 'A', '4', 'F', 'D', 'P'};

    sort(numbers);

    System.out.println(binarySearch(numbers, 3));

   }
}

(终端显示错误)

Test.java:8: error: cannot find symbol
    sort(numbers);
    ^
symbol:   method sort(double[])
location: class Test
 Test.java:10: error: cannot find symbol
    System.out.println(binarySearch(numbers, 3));
                       ^
 symbol:   method binarySearch(double[],int)
 location: class Test
  2 errors

【问题讨论】:

  • 如果去掉类名,你认为Java如何找到方法?
  • 去掉类名是什么意思?你是说Arrays.sort
  • 您将“Arrays.sort”更改为“Arrays”。 “数组”是类名。

标签: java arrays sorting symbols


【解决方案1】:

它是 Arrays 类的静态方法。

你应该像这样调用它:

Arrays.sort(someArray);

请注意,您仍然必须像这样导入 Arrays 类:

import java.util.Arrays;

或者正如其他人所提到的,如果您进行静态导入,您可以省略类名。

我认为Arrays.sort() 的可读性更好。

【讨论】:

  • 我尝试使用Arrays.sort(numbers) 运行,但没有成功。如果我只使用sort(numbers) 并且对import static 很重要,它就可以工作
  • 要使用 Arrays.sort 你需要使用 import java.util.Arrays;
【解决方案2】:

您需要进行静态导入。使用以下

import static java.util.Arrays.*;

原因

当你想导入一些静态成员(方法或变量)时,你需要静态导入成员。所以你必须使用import static

另一种解决方案

或者你可以导入

import java.util.Arrays;

并使用

Arrays.sort(b);

第二种解决方案的原因

这里您没有导入任何静态元素,因此需要正常导入到数组。然后就可以直接使用Arrays.sort访问了

【讨论】:

    【解决方案3】:

    您正在尝试进行静态导入,但您错过了static

    //   add v this
    import static java.util.Arrays.*;
    

    【讨论】:

    • 谢谢!它有效,但是为什么有人说使用Arrays.sort(array),即使我使用静态导入,这也会给我一个错误
    • 他们提供了另一种选择:进行正常导入:import java.util.Arrays; 并且你可以说Arrays.sort(someArray);
    猜你喜欢
    • 2013-12-06
    • 2016-07-22
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-08
    • 2015-02-22
    相关资源
    最近更新 更多