java静态错误:将元素转换为正方形后对数组进行排序
我试图学习Java,并试图从谷歌那里获得一个面试问题。答案可以在这里找到:https://www.geeksforgeeks.org/sort-array-converting-elements-squares/。当我复制时,将精确的代码粘贴到repl中。它告诉我Main丢失了,所以我添加了Main,正如你们在下面看到的,但它告诉我static有问题。有人能给我指一下正确的方向吗?我看了关于什么是静态的视频,但到目前为止,还没有一个视频对堆栈溢出有帮助。非常感谢
它给出了以下错误:
javac -classpath .:/run_dir/junit-4.12.jar:target/dependency/* -d . Main.java
Main.java:5: error: Illegal static declaration in inner class Main.GoogleInterview
public static void sortSquares(int arr[])
^
modifier 'static' is only allowed in constant variable declarations
Main.java:13: error: Illegal static declaration in inner class Main.GoogleInterview
public static void main(String[] args)
^
modifier 'static' is only allowed in constant variable declarations
2 errors
exit status 1
代码:
import java.util.*;
import java.io.*;
class Main{
class GoogleInterview {
public static void sortSquares(int arr[])
{
int n = arr.length;
for (int i = 0; i < n; i++)
arr[i] = arr[i] * arr[i];
Arrays.sort(arr);
}
public static void main(String[] args)
{
//Insert array of numbers below
int arr[] = { -3, 1, 0, 2, -482, 5 };
//Insert array of numbers above
int n = arr.length;
sortSquares(arr);
System.out.println("");
System.out.println("After Sort ");
for (int i = 0; i < n; i++)
System.out.print(arr[i] + " ");
}
}
}
# 1 楼答案
实际上,这个错误与
static
修饰符有关您的代码在
Main
类中声明了一个内部类:这就是问题所在。非静态内部类不能声明静态方法,因为它与外部类的实例化存在隐式关系