-1

Не могу понять, что не так в 14 строке (условие вложенного цикла while). Ошибка:

Exception in thread "main" java.lang.NullPointerException at solution.Solution.main(Solution.java:15)

Исходный код:

import java.util.*;
public class Solution {
    static int a[] = new int [100500];
    static int b[] = new int [100500];
        static java.util.Stack st;
public static void main(String[] args) throws Exception{
    Scanner sc = new Scanner (System.in);
    int n = sc.nextInt();
    for (int i=0; i<n; i++)
        a[i] = sc.nextInt();

            for (int i = n-1; i>=0; i--){
                while (st.peek() <= a[i]) 
                    st.pop();
                b[i] = st.peek();
                st.push(a[i]);                    
            }

            for (int i=0; i<n; i++)
                System.out.print(b[i]+" "); 
}

}

angry
  • 8,677
  • 18
  • 74
  • 182
Ваня
  • 13
  • 1
  • 5

1 Answers1

1

1) Стек надо создать. Например: st = new Stack();

2) При всех операциях со стеком используйте приведение типа к Integer. Например: b[i] = (Integer)st.peek(); Иначе, у меня вообще не компилируется.

3) При самом первом обращении стек пуст, это вызывает java.util.EmptyStackException. Пересмотрите Ваш алгоритм.

Что в алгоритме не так, я разбираться не стал, т.к. задача не сформулирована.

avp
  • 46,098
  • 6
  • 48
  • 116