Deixa eu ver se consigo sanar a sua duvida de vez…
é o seguinte:
Você criou uma classe soma
public class Soma{
float $numero0 =0;
float $numero1 =0;
float $resultado=0;
public void somar(){
$resultado= $numero0 + $numero1;
System.out.println ("Resultado da soma eh de "+ $resultado);
}
}
Dentro desta classe soma você criou três atributos float
float $numero0 =0; para receber um determinado valor
float $numero1 =0; para receber um determinado valor
float $resultado=0; para receber o valor da soma dos dois outros.
E criou um metodo que não retorna nada e só imprime o valor da soma.
public void somar(){
$resultado= $numero0 + $numero1;
System.out.println ("Resultado da soma eh de "+ $resultado);
}
Depois você criou uma classe calculadora como a que esta logo abaixo, que teria como função
receber os parametros do teclado e chamar o metodo somar da classe Soma
import java.io.*;
public class Calculadora{
public static void main (String []args){
BufferedReader entrada;
entrada = new BufferedReader (new InputStreamReader(System.in));
Soma $n1 = new Soma();
Soma $n2 = new Soma();
try{
System.out.println ("Insira o primeiro numero");
$n1 = Float.parseFloat (entrada.readLine());
$n1 = Float.parseFloat (entrada.readLine());
}
catch (Exception e) {
System.out.println ("Erro de entrada");
}
}
}
Você obteve o erro pelo seguinte:
Soma $n1 = new Soma(); Cria uma referência $n1 a classe Soma e agora $n1 é um objeto soma (na verdade não é um objeto soma, mas uma referência para ele, mas para vc entender veja a referencia $n1 como sendo o objeto).
Soma $n1 = new Soma(); Não é necessario criar neste caso uma segunda referência já que vc pode fazer o que vc quer com apenas uma.
Quando você esta fazendo isso :
$n1 = Float.parseFloat (entrada.readLine());
Você está tentando atribuir a um objeto Soma um float, isso você não pode fazer porque
$n1 só pode receber objetos Soma. Afinal ele é uma referencia a Soma.
Digo que sempre devemos ficar atentos aos tipos.
Float so pode receber float.
int só pode receber int
e um objeto Soma só pode receber um objeto Soma.
É claro que temos o Casting, mas não vou entrar neste detalhe.
O correto seria você tentar acessar o atributo $numero0 da classe Soma.
você acessa o seu atributo através da referência:
usamos o “.” para acessar o atributo dentro da classe Soma.
Então temos
(referência).atributo = valor do teclado
Em codigo:
$n1.$numero0 = Float.parseFloat (entrada.readLine());
Isso vai fazer com que o atributo da classe soma $numero0 receba o valor digitado pelo usuario, e vc deve fazer isso para o outro atributo.
$n1.$numero1 = Float.parseFloat (entrada.readLine());
O seu erro é conceitual, você esta trabalhando com objetos, então vc deve acessar os atributos de seus objetos através
de suas referências. O que você fez foi tentar programar proceduralmente.
Para acessar o seu metodo, você deve fazer da mesma forma:
$n1.somar();
so que pra isso funcionar vc vai ter que fazer algumas modificações no seu codigo
como as classes são publicas e vc não esta declarando nenhum atributo como private todos estão com o modificador default.
Então vc não precisa de get e set.
Aqui vai o que deve ser feito
A classe Soma()
public class Soma{
float $numero0 =0;
float $numero1 =0;
float $resultado=0;
public void somar(){
this.$resultado = this.$numero0 + this.$numero1;
System.out.println ("Resultado da soma eh de "+ $resultado);
}
}
A classe Calculadora()
import java.io.*;
public class Calculadora{
public static void main (String []args){
BufferedReader entrada = new BufferedReader (new InputStreamReader(System.in));
Soma $n1 = new Soma();
try{
System.out.println ("Insira o primeiro numero");
$n1.$numero0 = Float.parseFloat (entrada.readLine());
System.out.println ("Insira o segundo numero");
$n1.$numero1 = Float.parseFloat (entrada.readLine());
//chamada para o metodo somar
$n1.somar();
}
catch (Exception e) {
System.out.println ("Erro de entrada");
}
}
}
Espero ter ajudado você a entender onde você errou.