Oi gente, sou nova em programação e tenho uma duvida.
Ler 3 valores (considere que não serão informados valores iguais) e escrever a soma dos
2 maiores.
O código esta somando independente de ser numero maior ou menor.
public static void main(String[] args) {
int v1 = Entrada.leiaInt(" Digite o valor 1 “);
int v2 = Entrada.leiaInt(” Digite o valor 2 “);
int v3 = Entrada.leiaInt(” Digite o valor 3 ");
Já é o segundo pedido igual em menos de uma semana… deve ser algum trabalho. E ambos ligam o “complicómetro”.
Se o objetivo é somar os dois maiores, então temos de ver as condições em que dois dos valores são maiores que o terceiro
if (v1 > v3 && v2 > v3) { // v3 é o menor
System.out.print(v1 + v2);
} else if (v1 > v2 && v3 > v2) { // v2 é o menor
System.out.print(v1 + v3);
} else { //aqui nao precisa de if, por exclusão de partes, v1 será o menor
System.out.print(v2 + v3);
}
Mas se a quantidade de números varia, e você só quer saber quais são os 2 maiores (e não precisa guardar os outros números), aí nem precisa guardar tudo em um array, pois dá pra fazer tudo no mesmo loop que lê os números:
Scanner entrada = new Scanner(System.in);
System.out.println("Quer quantos números?");
int tamanho = entrada.nextInt(); // não precisa criar a variável antes, pode fazer tudo de uma vez
// os maiores começam com o menor valor possível, assim qualquer valor digitado será maior que eles
int maior = Integer.MIN_VALUE;
int segundoMaior = Integer.MIN_VALUE;
for (int i = 1; i <= tamanho; i++) { // começa com 1, só pra não precisar somar 1 no println :-)
System.out.print("Digite o " + i + "º valor: ");
int n = entrada.nextInt();
if (n > maior) {
segundoMaior = maior;
maior = n;
} else if (maior >= n && n >= segundoMaior) {
segundoMaior = n;
}
}
System.out.printf("maior=%d, segundo maior=%d, soma=%d\n", maior, segundoMaior, maior + segundoMaior);
No else if as condições usam >= para o caso de todos os números serem iguais (senão segundoMaior nunca é setado).