Почему eclipse показывает мне ошибку в строке, где я написал publi c stati c void main (String [] args) - PullRequest
0 голосов
/ 05 апреля 2020

Так почему public static void main(String[] args) Я получил ошибку. что я могу сделать, чтобы решить это?

package linkedList;

public class HackerRank {

    public class Solution {

        // Complete the aVeryBigSum function below.
        public long aVeryBigSum(long[] ar) {
            long a=0;
            for(int i=0;i<ar.length;i++){
                a=ar[i]+a;
            }

            return a;
        }


        public static void main(String[] args) { ///why this line is not correct 
            Solution s= new Solution();
            long[] ar= {10000,20000,30000};

            System.out.println(s.aVeryBigSum(ar));

        }
    }
}

Ответы [ 3 ]

1 голос
/ 05 апреля 2020

Существует еще одно возможное решение - исключить вложенный класс Solution из класса HackerRank, поскольку, как я вижу, в данный момент вы ничего с ним не делаете.

public class Solution {

    // Complete the aVeryBigSum function below.
    public long aVeryBigSum(long[] ar) {
        long a = 0;
        for (int i = 0; i < ar.length; i++) {
            a = ar[i] + a;
        }
        return a;
    }

    public static void main(String[] args) { 
        Solution s = new Solution();
        long[] ar = { 10000, 20000, 30000 };

        System.out.println(s.aVeryBigSum(ar));
    }
}

Это гарантирует, что ваше состояние c основной метод работает.

0 голосов
/ 05 апреля 2020

Существует два возможных решения (любое из них будет работать):

A. Объявление Solution как static, т. Е.

public static class Solution

B . Удалите объявление внешнего класса, public class HackerRank, чтобы сделать Solution типом верхнего уровня, т. Е.

public class Solution {    
    // Complete the aVeryBigSum function below.
    public long aVeryBigSum(long[] ar) {
        long a = 0;
        for (int i = 0; i < ar.length; i++) {
            a = ar[i] + a;
        }    
        return a;
    }

    public static void main(String[] args) { // Now this will work
        Solution s = new Solution();
        long[] ar = { 10000, 20000, 30000 };    
        System.out.println(s.aVeryBigSum(ar));      
    }
}

Обратите внимание, что метод static может быть только внутри static или тип верхнего уровня.

0 голосов
/ 05 апреля 2020

Вы не можете получить доступ к методу stati c в классе non-stati c. Существует 2 возможных решения этой проблемы: - 1. Сделать решение stati c

public static class Solution {

    public static void main(String[] args) {
    //...
    }

}

- 2. Удалить stati c из основного метода

public class Solution {

    public void main(String[] args) {
    //...
    }

}
...