Duvidas de como chamar um metodo de outra classe

9 respostas
fabiomarcilio

Boa tarde pessoal, estou com uma duvida bem boba, é que ainda estou começando no java.

tenho 2 classes, uma chama CartaoSorteio e a outra é a Tela jogo:

package JogoDosNumeros.classes;

import java.util.Random;

/**
 *
 * @author Fabio
 */
public class CartaoSorteio extends Cartao {

    public CartaoSorteio() {
        super(6);
    }
    //Atributos
    public int sorteio[];

    private void sorteiaNumeros() {
        for (int c = 0; c < contNumeros; c++) {
            sorteio[c] = (int) Math.random()* 60;
        System.out.println(sorteio[c]);
        }
    }
}

preciso utilizar o metodo sorteiaNumeros na classe abaixo:
classe TelaJogo, quando clicar no botão verificar

private void jBVerificaAcertosActionPerformed(java.awt.event.ActionEvent evt) {                                                  
        
        aposta = new CartaoAposta(10);
        qtdeNumeros = checaNumeros();
        if (qtdeNumeros >= 6 && qtdeNumeros <= 10) {
            aposta.setNumeroAposta();
            armazenaAposta();
            resultado.setText(aposta.numeroAposta() + "\n" + aposta.numerosCartao());
        } else {
            resultado.setText("Qtde selecionada deverá estar no intervalo de 6 a 10 números");
        }
    }

não sei como chamar o método, ja tentei instanciar mas não aparece o método.

9 Respostas

InicianteJavaHenriqu

Você tem que mudar o modificador private para public :smiley:

fabiomarcilio

putz, que vacilo,rs… olhei essas linhas um tempão e não vi!, valew InicianteJavaHenrique. :smiley:

InicianteJavaHenriqu

De nada :smiley:

Agora só falta vc colocar [RESOLVIDO] no título.

:thumbup:

fabiomarcilio

:thumbup:

fabiomarcilio

aproveitando o topico, tem outro problema, ao chamar o método totAcertos, para comparar com os numeros que o user escolheu ele retorna o erro:
Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException

segue o metodo:

public String numeroAposta() {
        String aposta = "Aposta N." + getNumeroAposta() + "\nValor da aposta R$ " + calculaAposta()+ "\n Total de acertos: "+totAcertos();
        return aposta;
    }

    public int totAcertos() {
        int acertos = 0;
        for (int c = 0; c < 6; c++) {
            for (int a = 0; a < numeros.length; a++) {
                if (numeros[c] == sorteio[a]) {
                    acertos++;
                }
            }
        }
        return acertos;
    }
}

o problema esta em totAcertos, pois quando nao imprimo ele tudo funciona

InicianteJavaHenriqu

:shock: engraçado vc iniciou a variável acertos :shock: tem certeza que é nesse método a exceção :?:

:thumbup:

fabiomarcilio

então, é só tirar a chamada do metodo totAcertos() que o programa volta a funcionar:

Esse esta em uma classe chamada CartaoAposta()

public String numeroAposta() {  
           String aposta = "Aposta N." + getNumeroAposta() + "\nValor da aposta R$ " + calculaAposta()+ "\n Total de acertos: "+totAcertos();  // é só tirar isso (+ "\n Total de acertos: "+totAcertos()) que tudo funciona
           return aposta;  
       }

é só tirar o que esta antes do comentado acima que tudo funciona, as duas classes puxam herança de uma terceira classe chamada Cartao
e esse em outra classe chamada CartaoSorteio()

public int totAcertos() {  
           int acertos = 0;  
           for (int c = 0; c < 6; c++) {  
               for (int a = 0; a < numeros.length; a++) {  
                   if (numeros[c] == sorteio[a]) {  
                       acertos++;  
                   }  
               }  
           }  
           return acertos;  
       }
InicianteJavaHenriqu

É difícil visualizar o problema assim, se a classe(s) não for muito grande e se você pode postar, talvez acharemos o problema (não é certeza) :wink:

:thumbup:

fabiomarcilio

verdade Henrique, vou postar as 2 classes,

Essa é a classe TelaJogo, que é a main, nao da p/ colocar inteira, pois são 60 botoes c/ numeros de 1 a 60, mas o botão verifica é o que faz as comparaçoes.

public class TelaJogo extends javax.swing.JFrame {

    private int qtdeNumeros;
    private CartaoAposta aposta;
    private CartaoSorteio sorteio;

    /** Creates new form TelaJogo */
    public TelaJogo() {
        initComponents();
        qtdeNumeros = 0;
    }

 private void jBVerificaAcertosActionPerformed(java.awt.event.ActionEvent evt) {                                                  
        sorteio = new CartaoSorteio();
        aposta = new CartaoAposta(10);
        qtdeNumeros = checaNumeros();
        sorteio.sorteiaNumeros();
        if (qtdeNumeros >= 6 && qtdeNumeros <= 10) {
            aposta.setNumeroAposta();
            armazenaAposta();
            resultado.setText(aposta.numeroAposta() + "\n" + aposta.numerosCartao() + "\n");
        } else {
            resultado.setText("Qtde selecionada deverá estar no intervalo de 6 a 10 números");
        }
    }

E essa é a classe CartaoAposta:

package JogoDosNumeros.classes;

/**
 *
 * @author Fabio
 */
public class CartaoAposta extends Cartao {

    private static int numeroAposta;

    public CartaoAposta(int qtde) {
        super(qtde);
    }

    public float calculaAposta() {
        float valor = 0;
        if (contNumeros == 6) {
            valor = 1.75f;
        } else if (contNumeros == 7) {
            valor = 12.25f;
        } else if (contNumeros == 8) {
            valor = 49.00f;
        } else if (contNumeros == 9) {
            valor = 147.00f;
        } else if (contNumeros == 10) {
            valor = 367.50f;
        }
        return valor;
    }

    public int getNumeroAposta() {
        return numeroAposta;
    }

    public void setNumeroAposta() {
        numeroAposta++;
    }

    public String numerosCartao() {
        StringBuilder dados = new StringBuilder("Números apostados:\n");
        //  String aposta="Aposta N."+getNumeroAposta();
        for (int num : numeros) {
            dados.append(num + "\t");

        }

        return dados.toString();
    }

    public String numeroAposta() {
        String aposta = "Aposta N." + getNumeroAposta() + "\nValor da aposta R$ " + calculaAposta()+ "\n Total de acertos: "+totAcertos();
        return aposta;
    }

    public int totAcertos() {
        int acertos = 0;
        for (int c = 0; c < 6; c++) {
            for (int a = 0; a < numeros.length; a++) {
                if (numeros[c] == sorteio[a]) {
                    acertos++;
                }
            }
        }
        return acertos;
    }
}
Criado 21 de abril de 2012
Ultima resposta 23 de abr. de 2012
Respostas 9
Participantes 2