有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    实际上,这个错误与static修饰符有关
    您的代码在Main类中声明了一个内部类:这就是问题所在。非静态内部类不能声明静态方法,因为它与外部类的实例化存在隐式关系