Programa cinema e poltronas

Pessoal, tenho que fazer um programa de poltronas de cinema com três funções, a primeira que inicializa todas com o valor zero(livre), a segunda que ocupa o lugar e a terceira que escolhe uma fila e vê quantas poltronas livres aquela fila tem,qual é a primeira poltrona livre e quantas poltronas livres existem ao lado dessa primeira.Então ai fiz meu código aqui e dá tudo certo, mas quando eu digito os valores 0 e 0(fila 0 e poltrona 0) e quero saber as poltronas livres na fila 0 dá erro…
Alguém sabe por que?’—’


package javaapplication70;

import javax.swing.JOptionPane;
public class JavaApplication70 {

 
    public static void main(String[] args) {
        int pol[][]=new int[14][40];
        inicializar(pol);
        ingresso(pol);
        disponibilidade(pol);
    }
    public static void inicializar(int pol[][]){
        for(int i=0;i<14;i++){
            for(int j=0;j<40;j++){
                pol[i][j]=0;
            }
        }
    }
    public static void ingresso(int pol[][]){
        int k=1;
        while(k!=0){
            int i=Integer.parseInt(JOptionPane.showInputDialog("Digite o número da fila"));
            int j=Integer.parseInt(JOptionPane.showInputDialog("Digite o número da poltrona"));
            if(pol[i][j]==0){
            pol[i][j]=1;
            String nome=JOptionPane.showInputDialog("Digite seu nome,por favor!");
            }
            else{
                JOptionPane.showMessageDialog(null,"Desculpe!Essa poltrona já está ocupada \n Por favor, escolha outra.");
            }
            
            k=Integer.parseInt(JOptionPane.showInputDialog("Você quer comprar mais um ingresso?\n 1-sim\n 0-não"));
        }
    }
    public static void disponibilidade(int pol[][]){
        int cont=0;
        int cont2=0;
        int cont3=0;
        int m=0;
        int i=Integer.parseInt(JOptionPane.showInputDialog("Digite o número da fila"));
        for(int j=0;j<40;j++){
           if(pol[i][j]==0){
               cont++;
               cont2++;
           }
           if(cont==1){
               m=j;
              int y=j;
  
              while(y<40){
                  y++;
                  if(pol[i][y]==0){
                  cont3++;
                  
              }
                  else{
                      break;
                  }
              }
        }
       
    }
        System.out.println("Nessa fila existem "+cont2+" poltronas disponíveis");
        System.out.println("A primeria poltrona livre da fila é a de número "+m);
        System.out.println("E ao lado dessa poltrona há mais "+cont3+" poltronas livre(s) ");
    }
}

Após verificar seu código percebi que um dos seus contadores está contando antes de fazer o teste se chegou ao máximo de colunas da matriz,
o contador y dentro do método de disponibilidade(), abaixo o código funcionando com a correção:

package javaapplication70;  
  
import javax.swing.JOptionPane;  
public class JavaApplication70 {  
  
  
    public static void main(String[] args) {  
        int pol[][]=new int[14][40];  
        inicializar(pol);  
        ingresso(pol);  
        disponibilidade(pol);  
    }  
    public static void inicializar(int pol[][]){  
        for(int i=0;i<14;i++){  
            for(int j=0;j<40;j++){  
                pol[i][j]=0;  
            }  
        }  
    }  
    public static void ingresso(int pol[][]){  
        int k=1;  
        while(k!=0){  
            int i=Integer.parseInt(JOptionPane.showInputDialog("Digite o número da fila"));  
            int j=Integer.parseInt(JOptionPane.showInputDialog("Digite o número da poltrona"));  
            if(pol[i][j]==0){  
            pol[i][j]=1;  
            String nome=JOptionPane.showInputDialog("Digite seu nome,por favor!");  
            }  
            else{  
                JOptionPane.showMessageDialog(null,"Desculpe!Essa poltrona já está ocupada \n Por favor, escolha outra.");  
            }  
              
            k=Integer.parseInt(JOptionPane.showInputDialog("Você quer comprar mais um ingresso?\n 1-sim\n 0-não"));  
        }  
    }  
    public static void disponibilidade(int pol[][]){  
        int cont=0;  
        int cont2=0;  
        int cont3=0;  
        int m=0;  
        int i=Integer.parseInt(JOptionPane.showInputDialog("Digite o número da fila"));  
        for(int j=0;j<40;j++){  
           if(pol[i][j]==0){  
               cont++;  
               cont2++;  
           }  
           if(cont==1){  
               m=j;  
              int y=j;  
    
              while(y<40){  
                  // y++ posicao do incremento antes
                  if(pol[i][y]==0){  
                  cont3++;  
                    
              }  
                  else{  
                      break;  
                  }  
                 y++ // posicao atual do incremento
              }  
        }  
         
    }  
        System.out.println("Nessa fila existem "+cont2+" poltronas disponíveis");  
        System.out.println("A primeria poltrona livre da fila é a de número "+m);  
        System.out.println("E ao lado dessa poltrona há mais "+cont3+" poltronas livre(s) ");  
    }  
}  

Nossa era isso mesmo.
Muito obrigado C.Porto!^^