Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

KS_Scream

Não consigo usar string com orientação a objeto

Recommended Posts

Boa noite, sou iniciante em java, tenho que fazer o seguinte exercicio:

 

"Escreva um programa que calcule e escreva a quantidade de letras maiúsculas de uma frase fornecida pelo usuário."

 

Ele deve ser feito com orientação a objetos, fiz da seguinte forma:

 

public class Principal {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Scanner Ler = new Scanner(System.in);
        Mai mai = new Mai();
        System.out.println("Digite a frase:");
        String s = Ler.nextLine();
        mai.setS(s);
        mai.geraSaida();
        System.out.println (mai.getGeraSaida());        
    }
}
public class Mai {
    public int i;
    public String s;
    public int ct = 0;
    public int n;
/***/
    public int getI() {
    return i;
    }    
    public void setI(int i) {
    this.i = i;
    } 
    public int getCt() {
    return ct;
    }    
    public int getN() {
    return n;
    }    
    public void setN(int n) {
    this.n = n;
    }     
    public String getS() {
        return s;
    }    
    public void setS(String S) {
    this.s = s;
    }
    public void geraSaida() {
      int n = s.length(); // tamanho da cadeia
      for (i=0; i<n; i++) {
        if ((s.charAt(i) >= 'A') && (s.charAt(i) <= 'Z'))
           ct = ct + 1;
      }
    }    
    public int getGeraSaida() {
    return ct;
    }
    public void setCt(int ct) {
    this.ct = ct;
    } 
}

 

Como disse antes, sou iniciante ainda, estou tentando aprender, o netbeans nao indica nenhum erro, mas na hora de rodar ele apresenta o erro:

 

"Exception in thread "main" java.lang.NullPointerException

at exercicio9.Mai.geraSaida(Mai.java:39)
at exercicio9.Principal.main(Principal.java:24)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 3 segundos)"
O erro ocorre após digitar a frase. Alguém pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, cara ai foi falta de atenção sua, eu até pensei que o problema era em acessar o lenght(tamanho) da variável de instância mais não era.
O seu erro foi no setS, você pediu uma string mais com o argumento "S" maiúsculo, e quando foi atribuir no próprio método ele não reconheceu, só basta colocar o "s" minúsculo.

 

//coloque a variável do argumento "s" minúsculo
public void setS(String S) {
    this.s = s;
    }

 

Outra dica para você, os métodos getters e setters tem como propósito o "encapsulamento", não ajuda em nada você usar esses métodos sendo que suas variáveis estão todas vísiveis (public), modifique elas para (private), ai você dará razão aos métodos, que tem por objetivo a segurança.
abç.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.