KS_Scream 1 Denunciar post Postado Abril 25, 2013 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
João A. Neto 0 Denunciar post Postado Abril 30, 2013 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