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.
publicstaticvoidmain(String[]args){intv1=Entrada.leiaInt(" Digite o valor 1 “);int v2 = Entrada.leiaInt(” Digite o valor 2 “);int v3 = Entrada.leiaInt(” Digite o valor 3 ");
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:
Scannerentrada=newScanner(System.in);System.out.println("Quer quantos números?");inttamanho=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 elesintmaior=Integer.MIN_VALUE;intsegundoMaior=Integer.MIN_VALUE;for(inti=1;i<=tamanho;i++){// começa com 1, só pra não precisar somar 1 no println :-)System.out.print("Digite o "+i+"º valor: ");intn=entrada.nextInt();if(n>maior){segundoMaior=maior;maior=n;}elseif(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).