Exception in thread “main” java.lang.NumberFormatException: For input string: "" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

Boa noite,

Estou aprendendo programação orientada a objetos e tenho que fazer um programa de validação de inscrição estadual, onde o programa vai receber um numero de inscrição e um estado e vai confirmar se esse numero é valido ou não de acordo com a regra para validação de cada estado.

Estou fazendo somente o estado de são paulo acredito já ter terminado os cálculos para validação só que ao executar aparecem alguns erros, irei colocar o código do programa e os erros em questão.

package aplicacaocliente;

public class InscricaoEstadual {
static String pesos =“1,3,4,5,6,7,8,10”;
public static boolean ValidarInscricaoEstadual(String p_Inscricao, String p_Estado){
if (p_Estado == “SP”){
return ValidarIE_SP(p_Inscricao);
}
return true;
}

// validando o código de são paulo
public static boolean ValidarIE_SP(String p_Inscricao){
    int resultadoDigito9 = 0;
    int resultadoDigito12 = 0;
    int i;
    //p_Inscricao = "110042490114";// exemplo de numero de inscrição
    
    // calculo para verificação do 9° digito
    for (i = 0 ; i<8 ; i++)
    {
        
        resultadoDigito9 = resultadoDigito9 + ( Integer.parseInt(p_Inscricao.substring(i, i))  *  Integer.parseInt(pesos.substring(i, i)) ) ; 
    }
    int resultadomodulo = resultadoDigito9 % 11;
    if (resultadomodulo == 10){
        resultadomodulo = 0;
    }       
   
    if (  resultadomodulo != Integer.parseInt(p_Inscricao.substring(8))){
        return false;
    }
    
    
    // calculo para verificação do 12° digito
    for (i = 0 ; i<11 ; i++)
    {            
        resultadoDigito12 = resultadoDigito12 + ( Integer.parseInt(p_Inscricao.substring(i, i))  *  Integer.parseInt(pesos.substring(i, i)) ) ; 
    }
    resultadomodulo = resultadoDigito12 % 11;
    if (resultadomodulo == 10){
        resultadomodulo = 0;
    }       
   
    if (  resultadomodulo != Integer.parseInt(p_Inscricao.substring(11))     ){
        return false;
        
    }
    
    return true;        
    
}    

}

package aplicacaocliente;

public class AplicacaoCliente {

public static void main(String[] args) {

//JFCadastroCliente objCadastroCliente = new JFCadastroCliente();
//objCadastroCliente.setVisible(true);

InscricaoEstadual objInscricaoEstadual = new InscricaoEstadual();
    objInscricaoEstadual.ValidarInscricaoEstadual("123002516539", "SP");

} 

}

e agora os erros ao tentar executar o código:

Exception in thread “main” java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:592)
at java.lang.Integer.parseInt(Integer.java:615)
at aplicacaocliente.InscricaoEstadual.ValidarIE_SP(InscricaoEstadual.java:24)
at aplicacaocliente.InscricaoEstadual.ValidarInscricaoEstadual(InscricaoEstadual.java:7)
at aplicacaocliente.AplicacaoCliente.main(AplicacaoCliente.java:11)
C:\Users\Anderson\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1

Qualquer ajuda é bem vinda.

Desde já Agradeço.

Amigo, pelas mensagens de erro creio que o principal problema seja na ulitização do método substring:

vale a pena dar uma olhada nisso Como funciona o método substring?
Além do mais veja que você está colocando números e vírgulas:

imagine o que acontece quando ele pega a parte da string que é uma vírgula e converte pra Integer? Bons estudos