Bhaskara - Iniciante?

Pessoal, eu comecei a programar em Java segunda-feira passada, então sou beeem iniciante ainda…
Conheço poucos comandos e tal - e talvez meus termos não estejam bem corretos pois estou estudando em um livro em inglês (Java for Dummies). Enfim, eu estou tentando (para treinar) criar um método pra calcular Bhaskara, mas não quero que ele esteja no método principal, criei uma classe e adicionei um método (sem o main void). Quero que o usuário informe três inteiros (a, b e c)
Aí criei outra classe pra rodar o main, mas estou tendo problemas e, claro, devem ter erros básicos dos quais eu estou esquecendo. Além de fazer o cálculo errado, ele dá um erro meio estranho.
Segue a primeira classe que criei (pra fazer o método bhaskara):

"import static java.lang.Math.sqrt;
public class Bhaskara {
int a, b, c;

public double calculaBhaskara (int a, int b, int c) {
	int delta;
	delta = (b*b) - 4*a*c;
	double x1 = (-b) + sqrt(delta)/2*a;
	double x2 = (-b) - sqrt(delta)/2*a; --> ERRO: The value of the local variable x2 is not used. [não entendi pq)
	return x1;
	return x2; --> ERRO: Unreachable code (??)
	}

}
"

E aqui o principal, para chamar o método informando três inteiros (a, b e c):
import java.util.Scanner;
public class RaizesBhaskara {

public static void main(String[] args){
	Bhaskara MostraRaizes = new Bhaskara();
	Scanner keyboard = new Scanner (System.in);
	System.out.println("Digite a");
	MostraRaizes.a=keyboard.nextInt();
	System.out.println("Digite b");
	MostraRaizes.b=keyboard.nextInt();
	System.out.println("Digite c");
	MostraRaizes.c=keyboard.nextInt();
		
	System.out.println(MostraRaizes.calculaBhaskara(MostraRaizes.a, MostraRaizes.b, MostraRaizes.c));
	keyboard.close();
}

}

Ficarei muito grato se alguém puder me ajudar, porque fiquei horas tentando resolver e tenho até um pouco de vergonha de postar aqui porque sei que acharão algum erro muito básico… Mas como disse, estou realmente começando (e gostando muito).
Obrigado e até mais!

Antes de mais nada recomendo você a começar pela lógica de programação, procure por cursos do gênero. Recomendo o curso de algoritmos do Curso em Vídeo.

Troque por:

double x1 = (-b + sqrt(delta)) / (2 * a);
double x2 = (-b - sqrt(delta)) / (2 * a);

Obrigado pela resposta.
Eu já li bastante coisa de lógica, e fiz um ano de ciência da computação (faz algum tempo), e em lógica eu ia muito bem. O problema aqui acho que não é a lógica (apenas acho).

Minha resposta foi sem querer, tive que editar. Dê uma olhada e faça seus testes, veja se funciona.

Não resolveu…
x2 Continua sem uso, e o erro final continua “Unreachable code”.

O problema é que você não pode retorna mais de um valor através de uma função. Além disso, o comando return sempre deve ser o último comando do método. Quando você chama o comando return a JVM para de executar o método atual e retorna para o método que o havia chamado. Assim, tudo que vem depois do comando return é ignorado. Como o compilador do Java é seu amigo, ele já acusa o erro “unreachable code”.

Para contornar esse problema, sugiro você criar uma classe ResultadoBhaskara para retornar os resultados:

class ResultadoBhaskara{
   double x1, x2;

   ResultadoBhaskara(double x1, double x2) { this.x1 = x1, this.x2 = x2 };
}

e aí no seu método para calcular você faz:

return new ResultadoBhaskara(x1,x2);

lembrando de alterar o tipo de retorno do método.

1 curtida

Perfeito. Muito obrigado!!