You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IntelliJ IDEA中Java代码编译报错:主方法返回值类型不符(已尝试static void)

问题解决步骤

你的代码存在两个核心问题导致报错,逐一处理即可解决:

1. 修正main方法的标准声明

Java程序的入口main方法必须严格遵循格式:public static void main(String[] args),确保修饰符、返回值类型、参数完全符合这个标准,这是JVM识别程序入口的唯一要求。

2. 处理非静态内部类的实例化限制

Solution是非静态内部类,而main是静态方法——静态方法属于类本身,无法直接实例化依赖外部类实例的非静态内部类。有两种解决方式:

方式一:将Solution改为静态内部类

给Solution类添加static修饰符,让它属于外部类RotationsNumbers本身,这样静态的main方法可以直接实例化它:

public class RotationsNumbers {
    // 标准的main方法声明
    public static void main(String[] args) {
        Solution ans = new Solution();
        int[] arr = {5, 1, 2, 3, 4};
        System.out.println(ans.findKRotation(arr, 5));
    }

    // 改为静态内部类
    static class Solution {
        int findKRotation(int arr[], int n) {
            int ans = findPivot(arr, 0, n - 1);
            return ans == -1 ? 0 : ans + 1;
        }

        int findPivot(int arr[], int start, int end) {
            int mid;
            while (start < end) {
                mid = start + (end - start) / 2;
                if (mid < end && arr[mid] > arr[mid + 1]) {
                    return mid;
                }
                if (mid > start && arr[mid] < arr[mid - 1]) {
                    return mid - 1;
                }
                if (arr[mid] < arr[0]) {
                    end = mid - 1;
                } else {
                    start = mid + 1;
                }
            }
            return -1;
        }
    }
}

方式二:先创建外部类实例,再实例化内部类

如果不想修改Solution的静态属性,可以在main方法里先创建外部类对象,再通过该对象实例化内部类:

public class RotationsNumbers {
    public static void main(String[] args) {
        // 先创建外部类实例
        RotationsNumbers outer = new RotationsNumbers();
        Solution ans = outer.new Solution();
        int[] arr = {5, 1, 2, 3, 4};
        System.out.println(ans.findKRotation(arr, 5));
    }

    class Solution {
        int findKRotation(int arr[], int n) {
            int ans = findPivot(arr, 0, n - 1);
            return ans == -1 ? 0 : ans + 1;
        }

        int findPivot(int arr[], int start, int end) {
            int mid;
            while (start < end) {
                mid = start + (end - start) / 2;
                if (mid < end && arr[mid] > arr[mid + 1]) {
                    return mid;
                }
                if (mid > start && arr[mid] < arr[mid - 1]) {
                    return mid - 1;
                }
                if (arr[mid] < arr[0]) {
                    end = mid - 1;
                } else {
                    start = mid + 1;
                }
            }
            return -1;
        }
    }
}

另外,错误提示中提到的BinarySearch.SortedArray和你代码里的RotationsNumbers不一致,检查项目中是否存在其他同名类,或包名、类名配置是否正确,避免IDE运行错误的类。

内容的提问来源于stack exchange,提问作者Mohan Reddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 04:30:56