Classe nao esta recebendo os valores de outra

8 respostas
D

Estou iniciando com Java e estou com um problema.
Criei uma classe Numeros que recebe dois numeros digitados pelo usuario;
Criei uma classe Equacao que recebe os numeros e soma eles.

Estou tendo dificuldades de fazer a "Equacao" (soma) receber os numeros e soma-los. Como posso fazer ?

public class Main {

	public static void main(String[] args) {
		
		Numeros num = new Numeros();
		Equacoes equa = new Equacoes();

		num.recebeNum();
		equa.soma();

	}

}
import java.util.*;
public class Numeros {

	int num1, num2;
	Scanner in = new Scanner (System.in);
	
	void recebeNum(){

		System.out.println("Primeiro");
		num1 = in.nextInt();
		System.out.println("Segundo");
		num2 = in.nextInt();
		//System.out.println(getNum1() + "::::::" + getNum2());
	}
	
	public int getNum1(){
		return num1;
	}
	
	public void setNum1(int num1){
		this.num1 = num1;
	}
	
	public int getNum2(){
		return num2;
	}
	
	public void setNum2(int num2){
		this.num2 = num2;
	}	
}
public class Equacoes {

	int result;
	Numeros num = new Numeros();

	void soma() {
		
		System.out.println(num.getNum1());
		
		result = num.getNum1() + num.getNum2();

	}

	public int getResult() {
		return result;
	}

	public void setResult(int result) {
		this.result = result;
	}

}

8 Respostas

drsmachado

Claro que não vai conseguir.
Você não chama o método recebeNum() do objeto num e já quer ler os valores.

D

drsmachado:
Claro que não vai conseguir.
Você não chama o método recebeNum() do objeto num e já quer ler os valores.

Editei, tinha esquecido de colocar.

drsmachado
void soma() {   
           
        System.out.println(num.getNum1());   
           
        result = num.getNum1() + num.getNum2();   
  
    }

Editou o que?
Você cria o objeto aqui Numeros num = new Numeros(); e o instancia;
Porém, não chama o método

void recebeNum(){   
  
        System.out.println("Primeiro");   
        num1 = in.nextInt();   
        System.out.println("Segundo");   
        num2 = in.nextInt();   
        //System.out.println(getNum1() + "::::::" + getNum2());   
    }

do objeto num

Seria o mesmo que tentar fazer

System.out.println(num.getNum1());

sem colocar

num.getNum1()
D
drsmachado:

A classe Main ta chamando os métodos, isso que eu editei. Como posso fazer para a classe receber os valores e somar ?

public class Main {  
      
        public static void main(String[] args) {  
              
            Numeros num = new Numeros();  
            Equacoes equa = new Equacoes();  
      
[b]            num.recebeNum();  
            equa.soma();  [/b]
      
        }  
      
    }
fernandopaiva

kra, isso é muito simples…veja

public class ClassOne{
     
      public void pegaValorClassTwo(String valor){
            System.out.println(valor);
      }
}


public class ClassTwo{
     public static void main(String[] args){
          ClassOne co = new ClassOne();
          co.pegaValorClassTwo("Aqui o valor q to mandando pra ClassOne");
     }
}

simples d+ isso…Pra vc q esta começando se naum ler como funciona OO e Java vai apanhar muito. Leia a apostila FJ11 da Caelum

t+ e boa sorte

drsmachado

E o getter/setter de Numeros em Equacao?
Sem setar o objeto de numero no objeto de equacao, não vai rolar

drsmachado
public class Equacoes {   
  
    int result;   
    Numeros num = new Numeros();   
  
    void soma() {   
           
        System.out.println(num.getNum1());   
           
        result = num.getNum1() + num.getNum2();   
  
    }   
  
    public int getResult() {   
        return result;   
    }   
  
    public void setResult(int result) {   
        this.result = result;   
    }   
    public Numeros getNumeros() {   
        return num;   
    }   
  
    public void setNumeros(Numeros num) {   
        this.num = num;   
    }   
   

}

E na main

public class Main {     
         
        public static void main(String[] args) {     
                 
            Numeros num = new Numeros();     
            Equacoes equa = new Equacoes();     
         
            num.recebeNum();     
            equa.setNumeros(num);
            equa.soma();  [/b]   
         
        }     
         
    }
Iceguy

Não precisa de set em Numero pois quem acessa é só a própria classe.

Você pode criar um enum de TipoEquacao

public enum TipoEquacao{ SOMA, SUBTRACAO, DIVISAO, MULTIPLICACAO; }

No construtor do Numero você chama o receber() que atribui valores aos atributos so objeto (popula com os números capturados)

E na sua equeção vc coloca o método calcular(Numero num, TipoEquacao tipo) que decide qual conta fazer, valida os valores e direciona para o método privado que calcula o que foi pedido, depois ele retorna o valor pra calcular que retorna para o main

no main vc chama algo como

Equacao eq = new Equacao();
System.out.println(eq.calcular(new Numero(), SOMA));
Criado 14 de dezembro de 2011
Ultima resposta 14 de dez. de 2011
Respostas 8
Participantes 4