Erro Exception in thread "main" java.lang.NullPointerException[RESOLVIDO]

6 respostas
Jeanfbs

ola pessoal esse programa ele trás uma sobrescrita de metodos e herança de outras tres classes, chamada soma e diminuir, a super classe dessas é a operacao que trás
a mensagem de erro caso o usuário não digite soma ou subtração aqui estão as outras classes.

// CLASSE SOMA
 package polimorfismo;

public class Soma extends Operacao {
  
    
    public void somar(int valor1, int valor2){
    
        int resultado = valor1+valor2;
        
    System.out.println("[Metodo soma] o Resultado da soma é: "+resultado);
    
   
    }
    
   
    
    
}
//CLASSE OPERACAO

package polimorfismo;

public class Operacao{
  
    String erro = "Operação invalida";
    public void invalido(){
    
    System.out.println(erro);
    
    }
}
A classe diminuir não tem um metodo especifico ainda, apenas testei o programa com a classe somar. Bem quanto o codigo abaixo ele compila normalmente mas se eu acesso ao metodo somar, ele tras a resposta mas apresenta um erro de execução
Exception in thread "main" java.lang.NullPointerException
porque?
package polimorfismo;

import java.util.Scanner;

public class Conta   {

    public static void main(String[] args) {
     
        System.out.println("Digite o tipo de operação 'soma'ou'subtração': ");
        
        Scanner s = new Scanner(System.in);
        
        String tipo = s.nextLine();
        
       Soma oper1 = null;
       
       Diminuir oper2 = null;
       
       Operacao oper3 = null;
       
        if (tipo.equals("soma")){
        
         
         System.out.println("Digite o primeiro valor: ");
         
         Scanner r = new Scanner(System.in);
         
         int valor1 = Integer.parseInt(r.nextLine());
         
         System.out.println("Digite o segundo valor: ");
         
         Scanner r2 = new Scanner(System.in);
         
         int valor2 = Integer.parseInt(r.nextLine());
         
         
         oper1 = new Soma();
         
         oper1.somar(valor1,valor2);
         
         
        }
        else if(tipo.equals("subtração")) {
       
        oper2 = new Diminuir();
        
        }
        
        
        
        else 
            
            oper3 = new Operacao();
        
            oper3.invalido();
        
        
        
            }
}

Help me!!!

6 Respostas

Fexx

Vc nao teria que usar r2.nextLine() para a variável valor2?
Invés de

int valor2 = Integer.parseInt(r.nextLine());

Nao seria

int valor2 = Integer.parseInt(r2.nextLine());

Tenta aí.

Abraços.

Fica com DEUS.

Jeanfbs

kara valeu era isso mesmo, agora quero que me ajudem em outra coisa:

no codigo acima se eu digitar subtração o sistema entra na classe Operacao e chama o metodo invalido(),
se eu mudar o if para outra String como subtrair, ele chama o metodo de Diminuir(). Porque?

B

Você está usando linha de comando (ou seja, new Scanner (System.in) ? )
Evite usar comandos com acentos. É que há muitos problemas se houver acentos, portanto use algo mais simples como “-” ou “subtracao”. (Eu odeio digitar comandos tão compridos, preferiria digitar apenas “-”).

Fexx

Jeanfbs:
kara valeu era isso mesmo, agora quero que me ajudem em outra coisa:

no codigo acima se eu digitar subtração o sistema entra na classe Operacao e chama o metodo invalido(),
se eu mudar o if para outra String como subtrair, ele chama o metodo de Diminuir(). Porque?

Então ele não entra no if, pq a String subtração esta com acentos e quando vc a chama deve, chama sem acentos(subtracao).
O equals() não ignora acentos, então subtração é diferente de subtracao(sem os acentos), nisso o equal() devolve falso e entra no else.
Quando vc muda a String para subtrair(sem acentos), concerteza vc também a chama como subtrair(sem acentos), nisso o equals() devolve verdadeiro, e ele entra no if.

Abraços.

Fica com DEUS.

Jeanfbs

valeu galera ajudou muito aqui.

Um abração a todos!!!

Fexx

Marque o tópico como resolvido, caso lhe tenha sido ultil.

Abraços.

Fica com DEUS.

Criado 19 de abril de 2013
Ultima resposta 20 de abr. de 2013
Respostas 6
Participantes 3