Portugol-Studio
Portugol-Studio copied to clipboard
Erro numero 199cead3550574f7ed0907d2033c340f644ac6f8 v2.7.5
Esta issue foi gerada automaticamente
[pressione o botao "copiar erro" no Portugol Studio e cole o erro aqui antes de enviar] br.univali.ps.nucleo.ExcecaoAplicacao: java.lang.NullPointerException at br.univali.ps.nucleo.TratadorExcecoes.transformarExcecao(TratadorExcecoes.java:278) at br.univali.ps.nucleo.TratadorExcecoes.exibirExcecao(TratadorExcecoes.java:43) at br.univali.ps.ui.abas.AbaCodigoFonte.salvaArquivo(AbaCodigoFonte.java:928) at br.univali.ps.ui.abas.AbaCodigoFonte.access$1500(AbaCodigoFonte.java:102) at br.univali.ps.ui.abas.AbaCodigoFonte$21.actionPerformed(AbaCodigoFonte.java:989) at br.univali.ps.ui.abas.AbaCodigoFonte$20.actionPerformed(AbaCodigoFonte.java:889) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289) at java.awt.Component.processMouseEvent(Component.java:6539) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component.processEvent(Component.java:6304) at java.awt.Container.processEvent(Container.java:2239) at java.awt.Component.dispatchEventImpl(Component.java:4889) at java.awt.Container.dispatchEventImpl(Container.java:2297) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476) at java.awt.Container.dispatchEventImpl(Container.java:2283) at java.awt.Window.dispatchEventImpl(Window.java:2746) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84) at java.awt.EventQueue$4.run(EventQueue.java:733) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.awt.EventQueue.dispatchEvent(EventQueue.java:730) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) Caused by: java.lang.NullPointerException at br.univali.ps.ui.utils.FileHandle.save(FileHandle.java:19) at br.univali.ps.ui.utils.FileHandle.save(FileHandle.java:15) at br.univali.ps.ui.abas.AbaCodigoFonte.salvaArquivo(AbaCodigoFonte.java:922) ... 43 more
Código do Erro: programa {
//inclusão de bibliotecas
inclua biblioteca Teclado --> tl
inclua biblioteca Texto --> t
inclua biblioteca Tipos --> ti
inclua biblioteca Util --> u
//declaração de variáveis 1
const cadeia LINHA = "\n-----------------------------------\n"
const cadeia LINHA2 = "----------------------------------------------------\n"
const cadeia LINHADUPLA = "===================================\n"
const cadeia LINHADUPLA2 = "======================================================\n"
const cadeia LINHADUPLA3 = "=============================================================\n"
//declaração de variáveis 2
const inteiro NUMERO_TIPOS = 20
cadeia vProduto[]={"CAMISA ", "CAMISETA", "CALÇA ", "BERMUDA "} //espaços para alinhamento na hora da impressão
cadeia vCores[]= {"VERMELHO", "PRETO ", "AMARELO ", "AZUL ", "BRANCO ", "VERDE "}
cadeia vTamanho[]={"PP", "P ", "M ", "G ", "GG"}
cadeia vEstoque[21]
inteiro vQuantidade[21]
//sorteio e da entrada ao menu()
funcao inicio()
{ inteiro P
inteiro C
inteiro T
para(inteiro i = 1; i <21;i++){
P = u.sorteia(0, 3)
C = u.sorteia(0, 5)
T = u.sorteia(0, 4)
vEstoque[i] = vProduto[P] +" "+ vCores[C]+" "+ vTamanho[T] +"\t"
vQuantidade[i] = 1 // quantidade separada por conta do tipo inteiro, retorna 1 para cada item aleatorio gerado
}
menu()
}
//Menu de funcionalidades
funcao menu()
{
limpa()
cadeia n1 = "a"
inteiro n = 0
cadeia enter =""
escreva("\n" + (LINHADUPLA) + " LOJA GRUPO 2\n" + (LINHADUPLA) + (LINHA))
escreva("\nDeseja:\n\n1 - Consultar item especifico\n2 - Consultar todos os itens\n3 - Cadastrar item\n4 - Incluir/Excluir Quantidade\n5 - Ordem alfabetica\n" + (LINHA) + (LINHADUPLA) + "\n")
leia(n1)
se (ti.cadeia_e_inteiro(n1,10)){ // Proteção, n1 = inteiro, executa, caso não retorna ao inicio da função
n=ti.cadeia_para_inteiro(n1,10)
escolha(n){
caso 1: limpa() pesquisaIndividual()pare
caso 2: limpa() pesquisaTotal() pare
caso 3: limpa() cadastro() pare
caso 4: limpa() incluirQuantidade()pare
caso 5: limpa() ordemAlfa()pare
caso contrario: limpa()
escreva(LINHADUPLA2 + "\nOpção "+ n + " inválida! \nPor favor escolha uma opção válida!\n\n" + LINHADUPLA2 + "\nPressione enter para retornar ao menu!\n")
leia(enter)
se((enter == "") ou (enter != "")){
menu()
}
}
}senao{// caso n1 != de inteiro retorna ao inicio
escreva("\nOpção "+ n + " inválida! \nPor favor escolha uma opção válida!\nPressione enter para retornar ao menu!\n")
leia(enter)
se((enter == "") ou (enter != "")){
menu()
}
}
}
// pesquisa item a item por código e a pesquisa de todos
funcao pesquisaIndividual()
{
cadeia n1 = "a"
inteiro n = 0
cadeia saida = ""
faca{
escreva("\n" + (LINHADUPLA2) + "\nDigite o código do produto( 1 a 20 ):\n\n")
leia(n1)
se (ti.cadeia_e_inteiro(n1,10)){
n=ti.cadeia_para_inteiro(n1,10)
se((n < 1) ou (n>20)){
limpa()
escreva(LINHADUPLA2 + "\nDigito inválido!! Digite um digito válido!\n")
pesquisaIndividual()
}senao
limpa()
escreva("\n" + LINHADUPLA2 + "\n")
escreva("\tCód Nome Cor Tam\tQT\n\t----------------------------------\n")// espaços para alinhamento na impressão
escreva("\t"+ n +" "+ vEstoque[n] + vQuantidade[n])
escreva("\n\t----------------------------------\n\n" + LINHADUPLA2)
escreva("\nPressione enter para realizar mais uma pesquisa!\nPressione uma tecla e enter para retornar ao menu!\n\n" + LINHADUPLA2 + "\n")
leia(saida)
limpa()
}senao{
escreva(LINHADUPLA2 + "\nDigito inválido!! Digite um digito válido!\n")
}
}enquanto(saida == "")
menu()
}
funcao pesquisaTotal()
{
cadeia saida
escreva("Cód\tNome\t Cor\t Tam\tQT"+LINHA)
para(inteiro i = 1; i <21;i++){
escreva(i + "\t" + vEstoque[i] + vQuantidade[i] +"\n")
}
escreva(LINHA+"\nPressione enter para retornar ao menu!")
leia(saida)
se ((saida == "") ou (saida != "")){
menu()
}
}
//cadastro de novos itens e inclusão de novas quantidades de itens existentes
funcao cadastro(){
inteiro n =0
cadeia n1 = ""
cadeia opcaoP = ""
cadeia opcaoC = ""
cadeia opcaoT = ""
inteiro opcaoQ = 0
cadeia saida = ""
faca{
escreva("\n" + (LINHADUPLA2) + "\ncódigo a ser cadastrado(1 a 20)\n\n" + LINHADUPLA2 + "\n")
leia(n1)
se ((ti.cadeia_e_inteiro(n1,10))){ // Proteção, n1 = inteiro, executa, caso não retorna ao inicio da função
n=ti.cadeia_para_inteiro(n1,10)
se((n < 1) ou (n>20)){
limpa()
escreva("Digito inválido!! Digite um digito válido\n")
cadastro()
}
}senao{
escreva("Digito inválido!! Digite um digito válido!\n")
cadastro()
}
limpa()
escreva(LINHA + "Digite o tipo do produto:\n\nCamisa\nCamiseta\nCalça\nBermuda" + LINHA + "\n")
leia(opcaoP)
limpa()
escreva(LINHA + "Digite a cor do produto:\n\nVermelho \nPreto\nAmarelo\nAzul \nBranco\nVerde"+ LINHA + "\n")
leia(opcaoC)
limpa()
escreva(LINHA + "Digite o tamanho do produto:\n\nPP \nP\nM\nG \nGG"+ LINHA + "\n")
leia(opcaoT)
limpa()
escreva(LINHA + "Digite o quantidade do produto\n(somente numeros positivos)"+ LINHA + "\n")
leia(opcaoQ)
limpa()
se(((t.caixa_alta(opcaoP)== "CAMISA") ou (t.caixa_alta(opcaoP)== "CALÇA")ou ((t.caixa_alta(opcaoP)== "CAMISETA")
ou (t.caixa_alta(opcaoP)== "BERMUDA"))) e ((t.caixa_alta(opcaoC)== "VERMELHO")ou (t.caixa_alta(opcaoC)== "PRETO")
ou (t.caixa_alta(opcaoC)== "AMARELO")ou (t.caixa_alta(opcaoC)== "AZUL")ou (t.caixa_alta(opcaoC)== "BRANCO")
ou (t.caixa_alta(opcaoC)== "VERDE")) e ((t.caixa_alta(opcaoT)== "PP") ou (t.caixa_alta(opcaoT)== "P")
ou (t.caixa_alta(opcaoT)== "M") ou (t.caixa_alta(opcaoT)== "G")ou (t.caixa_alta(opcaoT)== "GG")) e (opcaoQ >-1))
{ // condicional para validar opcaoP, opcaoC, opcaoT e opcaoQ
vEstoque[n] = t.caixa_alta(opcaoP) + " " + t.caixa_alta(opcaoC) + " " + t.caixa_alta(opcaoT) + "\t "
vQuantidade[n] = opcaoQ
escreva("\n" + LINHADUPLA2 + "\nPressione S para cadastrar novo produto\nPressione uma tecla e enter para retornar ao menu.\n")
leia(saida)
}senao{ escreva("Opção " +opcaoP+", "+ +opcaoC+", "+opcaoT+" ou " +opcaoQ+" inválida!! \nPor favor digitem uma das opções validas. " ) cadastro() }
}enquanto ((saida == "S") ou (saida == "s"))
menu()
}
funcao incluirQuantidade()
{
inteiro cod = 0
inteiro Q = 0
cadeia saida = ""
faca{
escreva((LINHADUPLA3) + "\nqual o cód do produto que deseja incluir/excluir a quantidade\n\n" + LINHADUPLA3 + "\n")
leia(cod)
se(cod > 0 e cod <=20){
escreva ("\n" + LINHADUPLA3 + "\nQual a quantidade a incluir/excluir?\n(para excluir coloque o sinal de - antes do numero)\n\n" + LINHADUPLA3 + "\n")
leia(Q)
}senao{
escreva(LINHADUPLA3 + "\nCódigo inválido!!\nPor favor digite um código válido.\n\n" + LINHADUPLA3 + "\n")
incluirQuantidade()
}
vQuantidade[cod] = vQuantidade[cod]+ Q
se(vQuantidade [cod] <0){
escreva(LINHADUPLA3 + "\nA quantidade do produto ficará igual a " + vQuantidade [cod] +".\n\nQuantidade negativa não é válida! \nDigite uma quantidade válida!\n\n" + LINHADUPLA3 + "\n")
}
escreva("\n" + LINHADUPLA3 + "\nPressione S para cadastrar nova quantidade!\nPressione uma tecla mais enter para retornar ao menu!\n\n")
leia(saida)
}enquanto ((saida == "S") ou (saida == "s"))
menu()
}
//pesquisa por ordem afabetica (ainda não funciona)
funcao ordemAlfa()
{
}
}