Dúvida em código para ler menor maior e menor valor.
import java.util.Scanner;
/* Exercício
* Crie uma aplicação console que deverá ler 4 valores numéricos
* e apresentar o maior e o menor.
*/
public class Exercicio {
public static void main(String[] args) {
Scanner sc = new Scanner (System.in);
int valor[] = new int[4];
int maior = 0, menor = 0;
for(int i = 0; i < valor.length; i++){
System.out.print("Digite o " +(i+1)+"º valor: ");
valor[i] = sc.nextInt();
if(valor[i] > maior){
maior = valor[i];
}
}
for (int j = 0; j < valor.length; j++) {
if(valor[j] < menor){
menor = valor[j];
}
}
System.out.println("Maior valor = "+ maior);
System.out.println("Menor valor = "+ menor);
}
}
Como eu faço para inicializar uma variável que não seja com 0 (zero)? Do jeito que está ele só pega o maior valor se esse for maior que o anterior, que nesse caso é zero. E o menor valor só pega se for menor que zero.
Qual outra maneira de resolver esse problema?
Acredito q a melhor forma de resolver seu problema é verificar se é a primeira inserção de dados e em caso positivo inserir o valor nas duas variáveis, segue exemplo:
for(int i = 0; i < valor.length; i++){
System.out.print("Digite o " +(i+1)+"º valor: ");
valor[i] = sc.nextInt();
// Verifica se é o primeiro número inserido
if (i = 0) {
maior = valor[i];
menor = valor[i];
}
if(valor[i] > maior){
maior = valor[i];
}
}
Para o maior elemento, basta inicializar a variavel maior com o primeiro elemento do vetor.
E pro menor elemento, você pode usar o Integer.MAX_VALUE; Ou seja, ele vai armazenar na variavel menor o maior valor que uma variável int por armazenar.
O código ficaria assim:
[code]public class Exercicio {
public static void main(String[] args) {
Scanner sc = new Scanner (System.in);
int valor[] = new int[4];
int maior = valor[0], menor = Integer.MAX_VALUE;
for(int i = 0; i < valor.length; i++){
System.out.print("Digite o " +(i+1)+"º valor: ");
valor[i] = sc.nextInt();
if(valor[i] > maior){
maior = valor[i];
}
}
for (int j = 0; j < valor.length; j++) {
if(valor[j] < menor){
menor = valor[j];
}
}
System.out.println("Maior valor = "+ maior);
System.out.println("Menor valor = "+ menor);
}
} [/code]
Quando sua dúvida for esclarecida encerre o post por favor
Existe uma forma bem trivial de responder isso. Segue código abaixo:
[code]import java.util.Scanner;
/* Exercício
Crie uma aplicação console que deverá ler 4 valores numéricos
e apresentar o maior e o menor.
*/
public class Exercicio {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int a = 0, maior = 0, menor = 0;
for(int x = 0; x < 4; x++){
System.out.println("Insira um valor:");
a = in.nextInt();
if(x == 0){
maior = a;
menor = a;
}
if(a > maior){
maior = a;
}
if(a < menor){
menor = a;
}
}
System.out.print("Maior: "+ maior +". Menor: "+ menor);
}
[quote=GilsnSilva]
Como eu faço para inicializar uma variável que não seja com 0 (zero)? Do jeito que está ele só pega o maior valor se esse for maior que o anterior, que nesse caso é zero. E o menor valor só pega se for menor que zero.
Qual outra maneira de resolver esse problema?[/quote]
Vc poderia inicializar suas variáveis com Integer.MAX_VALUE ou Integer.MIN_VALUE, contudo essa solução seria ainda “ad doc”.
O correto é iniciar com o primeiro valor do array e iterar no laço apenas a partir do segundo elemento.
Isto garante a comparação correta.
public class Exercicio {
public static void main(String[] args) {
Scanner sc = new Scanner (System.in);
int valor[] = new int[4];
// primeiro obtenha o input sem fazer mais nada
for(int i = 0; i < valor.length; i++){
System.out.print("Digite o " +(i+1)+"º valor: ");
valor[i] = sc.nextInt();
}
// depois obtenha o maior e o menor
int maior = valor[0];
for (int i = 1 ; i < valor.length; i++){
if ( valor[i] > maior) {
maior = valor[i];
}
}
int menor = valor[0];
for (int i = 1; i < valor.length; i++) {
if(valor[i] < menor){
menor = valor[j];
}
}
System.out.println("Maior valor = "+ maior);
System.out.println("Menor valor = "+ menor);
}
}
import java.util.Arrays;
import java.util.Scanner;
/* Exercício
* Crie uma aplicação console que deverá ler 4 valores numéricos
* e apresentar o maior e o menor.
*/
public class Exercicio {
public static void main(String[] args) {
Scanner sc = new Scanner (System.in);
int valor[] = new int[4];
for(int i = 0; i < valor.length; i++){
System.out.print("Digite o " +(i+1)+"º valor: ");
valor[i] = sc.nextInt();
}
Arrays.sort(valor);
System.out.println("Maior valor = "+ valor[1]); <------------ segunda linha do vetor
System.out.println("Menor valor = "+ valor[valor.length-2]); <------------ penultima linha do vetor ou 3o. linha
}
}
Faça um programa console Java que receba as notas prova de 60 alunos. Considere que a digitação deverá ser de 0 até 35.
Como resultado intermediário, exiba o nome e o aproveitamento do aluno. Exemplo. O aluno que tirou 35 pontos na prova teve um aproveitamento de 100%
Pergunte ao usuário se deseja finalizar o programa (S – Sim / N – Não) Ao final exiba:
A média das notas
A quantidade de alunos que tiveram aproveitamento acima de 60%
Exibir a menor nota da turma.
Como faço?
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner leia = new Scanner (System.in);
//Declaracao de variaveis
int nota, //receber nota via teclado
contador = 0,//Contar alunos max 60
soma = 0, //Somar notas digitadas
contadorAcima60 = 0;//Contar qtos alunos tiveram nota maior que 60%
char resposta;//Informar se deseja encerrar ou nao
String nome;//Receber nome via teclado
int aproveitamento,
media;
//Loop para executar 60 vezes
do {
//Receber nome
System.out.print("Nome: ");
leia.next();
//Receber nota porem so de 0 a 35
do {
System.out.println("Digite sua nota: ");
nota = leia.nextByte();
if (nota < 0 || nota > 35) {
System.out.println("Nota invalida. Digite novamente.");
}
} while (nota < 0 || nota > 35);
aproveitamento = (100 * nota) / 35;
System.out.println("Aproveitamento: "+ aproveitamento+"%");
soma = soma + nota;
contador++;
} while (contador < 60);
media = soma / 60;
System.out.println("A média das notas foi: " + media);
}
//É só colocar “menor = maior;” antes do segundo “for” e tá resolvido! Porque a variável “menor” vai sempre iniciar com o valor máximo. Já testei assim e funcionou.
public class Exercicio {
public static void main(String[] args) {
Scanner sc = new Scanner (System.in);
int valor[] = new int[4];
int maior = 0, menor = 0;
for(int i = 0; i < valor.length; i++){
System.out.print("Digite o " +(i+1)+"º valor: ");
valor[i] = sc.nextInt();
if(valor[i] > maior){
maior = valor[i];
}
}
menor = maior;
for (int j = 0; j < valor.length; j++) {
if(valor[j] < menor){
menor = valor[j];
}
}
System.out.println("Maior valor = "+ maior);
System.out.println("Menor valor = "+ menor);
}
}
eu escrevi esse código para fazer o teste , porem eu criei as variáveis , menor e maior , no inicio do código e o código só verificou o maior numero, ai rodei o código igual ta aqui , e deu certo, alguém pode me explicar qual o motivo.
eu escrevi esse código para fazer o teste , porem eu criei as variáveis , menor e maior , no inicio do código e o código só verificou o maior numero, ai rodei o código igual ta aqui , e deu certo, alguém pode me explicar qual o motivo.