Portugol-Studio icon indicating copy to clipboard operation
Portugol-Studio copied to clipboard

Erro numero 199cead3550574f7ed0907d2033c340f644ac6f8 v2.7.5

Open EvelynChamorro opened this issue 11 months ago • 0 comments

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()
{	
	
}

}

EvelynChamorro avatar Mar 14 '24 23:03 EvelynChamorro