Soma de Array

32 respostas
marineli

Olá pessoal,

To iniciando no Java…Só pra contar.

To fazendo um exercício de lógica:
Tenho que ler seis notas, achar a menor e a maior, somar as notas tirando a maior e a menor.
Era só lógica mesmo, sem java, mais eu tentei fazer no java, como não tenho instalado, fiz no bloco de notas, deve estar com erros. :oops:
Achei a maior e a menor, mais não consigo fazer a soma…
Podem me ajudar, não precisa de metodos e tals, é o basico mesmo, Lógica de programação…

Obrigado…

public class Competicao {

public static void main (String [] args)  {
          
             Integer notas[] = new Integer [5];
             int maior = notas[0];
             int menor = notas[0];
             int notaFinal;


            for (int i = 0; i <notas.length; i++)  {
                 for(int j = 0; j <notas.length; j++)  {
                     if((notas[i]<notas[j]) && (notas[i]<menor))  {
                          menor = notas[i];
                      }

                     if((notas[i]>notas[j]) && (notas[i]>maior))  {
                          maior = notas[i];
                      }

32 Respostas

Eder_Peixoto
//Não esqueça de inicializar a variável.
notaFinal = 0;
notaFinal = notaFinal + notas[i];
  1. Você esqueceu de fechar os parênteses dos for.
  2. Porque utilizar dois for? Apenas um já é suficiente.
marineli

Eu preciso somar as notas do array e subtrair a menor e a maior nota.

Eu fiz dois for porque eu preciso descobrir qual a maior e qual a menor de cada posição do array, consegui explicar?..RS

Eder_Peixoto
for(int i = 0; i < notas.length; i++){
    if( notas[i] < menor ){
        menor = notas[i];
    }

    if( notas[i] > maior ){
        maior = notas[i];
    }
}
LucasAdri07
Eder Peixoto:
//Não esqueça de inicializar a variável.
notaFinal = 0;
notaFinal = notaFinal + notas[i];

1. Você esqueceu de fechar os parênteses dos for.
2. Porque utilizar dois for? Apenas um já é suficiente.

Cara eu estava vendo aqui ia ficar assim?

public class Array2 {

	public static void main(String[] args) {

		Integer notas[] = new Integer[5];
		int maior = notas[0];
		int menor = notas[0];
		int notaFinal = 0;

		for (int i = 0; i < notas.length; i++) {
			{
				if ((notas[i] < menor)) {
					menor = notas[i];
				}

				if ((notas[i] > maior)) {
					maior = notas[i];
				}

				notaFinal = notaFinal + notas[i];

			}
		}
	}
}

Mais falta receber os valores não é?

Eder_Peixoto

Isso mesmo LucasAdri07. Foi o que acabei de postar.

LucasAdri07

Só vi sua mensagem depois que postei a minha :S

Mais ainda falta algo para receber os valores não é?

Um JOptionPane por exemplo?

VictorMatuk

Acho que com dois for, ela quis percorrer todas as notas, armazenas a menor, e depois percorrer de novo comparando para achar a maior.

Tenta isso

public static void main (String [] args) { 
	int NOTAMAX = 10;
	int QTD = 5;
	int[] notas = new int[QTD];
	int menor = NOTAMAX;
	int maior = 0;
	int soma = 0;

	for(int i = 0; i < QTD; i++){
		if(notas[i] > maior){
			maior = notas[i];
		}
		if(notas[i] < menor){
			menor = notas[i];
		}
		soma += notas[i];
	}
soma = soma - maior - menor;
}

Exemplo:

QTD = 3;

notas[0] = 5;

maior = 5;

menor = 5;

soma = 5;
notas[1] = 2;

maior = 5;

menor = 2;

soma = 7;
notas[2] = 3;

maior = 5;

menor = 2;

soma = 10;

soma = 10 - 5 - 2; //3

marineli

É do jeito mais basico mesmo…
Brigado pessoal…
Valeu mesmo…
bjooooooooo

marineli

Ixiiiiiiiiiiii…Agora não tendi nada…
Do jeito q eu fiz não ta certo?

LucasAdri07

marineli:
Ixiiiiiiiiiiii…Agora não tendi nada…
Do jeito q eu fiz não ta certo?

Acho que você não tem os valores, você testou para ver?

marineli

É só um exercício de Lógica de programação, eu só fiz em java porque eu to aprendendo java, mais era só pra fazer em lógica:
Leia tres notas, ache a maior e a menor, some as notas, menos a menor e a maior.
Tendeu?

Eder_Peixoto

Oi marineli,

O que o LucasAdri07 perguntou é de onde que virão os valores (as notas). Serão informadados pelo usuário, lidos de um arquivo etc.

LucasAdri07

Eder Peixoto:
Oi marineli,

O que o LucasAdri07 perguntou é de onde que virão os valores (as notas). Serão informadados pelo usuário, lidos de um arquivo etc.

Isso, pois você vai precisar de um valor para cada nota, mesmo que seja um exercicio de lógica, você ira ter que receber as notas, usando um Buffered, um JOptionPane, um Scanner ou mesmo fixar as notas.

marineli

Não tem um jeito de fazer sem numero, mesmo q não for em java, só o basico, \Logica mesmo?

LucasAdri07

Do jeito que está, ele está só uma estrutura de um aplicativo, que ainda não pode ser executada, pois não tem valores.

Se for um exercicio que seu professor pediu, e você tem que mostrar os numeros, você precisa ter os valores deles, seja de um arquivo, digitado pelo usuario, ou fixado por você.

marineli

Não precisa mostrar numero, é só fazer um programa que leia seis notas, exclua a maior e a menor e some as demais.
Só isso, sem números, só o básico mesmo…
tipo…
numero = ler numero;

Essas coisas…

LucasAdri07

marineli:
Não precisa mostrar numero, é só fazer um programa que leia seis notas, exclua a maior e a menor e some as demais.
Só isso, sem números, só o básico mesmo…
tipo…
numero = ler numero;

Essas coisas…

Entendo, então você não ira executar? Pois esse aplicativo está morto do jeito que está, não podera ser executado.

marineli

Isso, não vou executar.
Mais pra eu executar é só passar valores, certo?

ViniGodoy

Olá Marineli. Por favor, quando postar códigos, use a tag code:
[code]
Seu código
[/code]

Senão fica muito difícil para lermos.

Frantic_Avenger

Bom para acabar com esse "Precisa de número ou não precisa" segue o código, passando os números por parâmetro (Não tá bem feito) :lol:

public class TesteParametro {   
	public static void main (String [] args) {   
  
	    int menor = Integer.parseInt(args[0]);   
	    int maior = Integer.parseInt(args[0]);   
	    int soma = 0;   
	    if (args.length < 3) {
	    	System.out.println ("Insira mais números");
	    	System.exit(0);
	    }
	    for(int i = 0; i < args.length; i++){   
	        if(Integer.parseInt(args[i]) > maior){   
	            maior = Integer.parseInt(args[i]);   
	        }   
	        if(Integer.parseInt(args[i]) < menor){   
	            menor = Integer.parseInt(args[i]);   
	        }   
	        soma += Integer.parseInt(args[i]);   
	    }   
	soma = soma - maior - menor; 
	System.out.println (soma);
	}   
}

Flw

marineli

Desculpa, pode deixar…

LucasAdri07

marineli:
Isso, não vou executar.
Mais pra eu executar é só passar valores, certo?

Sim, você tem que receber valores, seja digitado pelo usuarios, ou fixado por você.

Estou tentando fazer cada posição do array receber um valor.

+/- assim.

Integer notas[] = new Integer[5]; int maior = notas[0]; notas[0] = 3; notas[1] = 8; notas[2] = 12; notas[3] = 15; notas[4] = 7; int menor = notas[0]; int notaFinal = 0;

Nesse caso seria fixado pelo programador, mais ele apresenta um erro na segunda linha, o que pode ser?

marineli

Não entendi…

marineli

Assim roda?

[COD]

public class Competicao {

public static void main (String [] args) {

Integer notas[] = new Integer[5];

Random random = new Random();

for (int i=0; i<notas.length;i++){

notas [i] = random.nextInt(100);
int maior = notas[0];

int menor = notas[0];

int notaFinal = 0;
for(int i = 0; i <notas.length; i++)  {

if((notas[i]<menor))  {

menor = notas[i];

}
if((notas[i]>maior))  {
                     maior = notas[i];
         }
        notaFinal =  nota final +notas [i];
}

notaFinal -=menor;

notaFinal -= maior;

System.out.println(notaFinal);
ViniGodoy

Oi Marineli.

Para colocar a tag code (não COD), basta selecionar seu código todo e clicar no botão Code, que existe logo abaixo do título, quando vc está escrevendo mensagem.

LucasAdri07

Consegui fazer esse:

public class Array2 {

	public static void main(String[] args) {

		Integer notas[] = new Integer[5];
		int maior = 0;
		notas[0] = 3;
		notas[1] = 8;
		notas[2] = 12;
		notas[3] = 15;
		notas[4] = 7;
		int menor = Integer.MAX_VALUE;
		int notaFinal = 0;

		for (int i = 0; i < notas.length; i++) {

			if (notas[i] < menor) {
				menor = notas[i];
			}

			if (notas[i] > maior) {
				maior = notas[i];
			}

			notaFinal = notaFinal + notas[i];

		}
		System.out.println(menor);
		System.out.println(maior);
	}
}

Se você executar ele ele ira mostrar

3
15

Pois está exibindo o menor e o maior.

L

Oi! Marineli, acredito que é isso, localiza o maior e o menor e soma os diferentes:

public class MaiorMenor {

    public static void main(String[] args) {
        int valores[] = new int[5];
        valores[0] = 15;
        valores[1] = 8;
        valores[2] = 65;
        valores[3] = 32;
        valores[4] = 60;

        int menor = valores[0];//Considera a primeira posição como menor
        int maior = valores[valores.length-1];//considera a última posição como maior
        int somaTotal = 0; //soma dos valores exceto o maior e menor

        //procura pelo maior e menor
        for(int procura=0;procura <= valores.length-1; procura++){
            if(valores[procura] < menor){
                menor = valores[procura];
            }
            if(valores[procura] > maior){
                maior = valores[procura];
            }

        }

        // soma valores exceto o maior e o menor valor
        for(int soma=0;soma <= valores.length-1; soma++){
            if(valores[soma] < maior && valores[soma] > menor){
                somaTotal += valores[soma];
            }
        }
        System.out.printf("Menor é: %d \nMaior é: %d\nSoma:%d", menor, maior, somaTotal);
    }
}

Resposta:
Menor é: 8
Maior é: 65
Soma:107

Abraço!!!

D

é só vc fazer o metodo recebendo como parametro o vetor…assim n precisaria digitar, só faria a logica…

  • é sempre bom testar né…
    vlw
LucasAdri07
luizfernandorg:
Oi! Marineli, acredito que é isso, localiza o maior e o menor e soma os diferentes:
public class MaiorMenor {

    public static void main(String[] args) {
        int valores[] = new int[5];
        valores[0] = 15;
        valores[1] = 8;
        valores[2] = 65;
        valores[3] = 32;
        valores[4] = 60;

        int menor = valores[0];//Considera a primeira posição como menor
        int maior = valores[valores.length-1];//considera a última posição como maior
        int somaTotal = 0; //soma dos valores exceto o maior e menor

        //procura pelo maior e menor
        for(int procura=0;procura <= valores.length-1; procura++){
            if(valores[procura] < menor){
                menor = valores[procura];
            }
            if(valores[procura] > maior){
                maior = valores[procura];
            }

        }

        // soma valores exceto o maior e o menor valor
        for(int soma=0;soma <= valores.length-1; soma++){
            if(valores[soma] < maior && valores[soma] > menor){
                somaTotal += valores[soma];
            }
        }
        System.out.printf("Menor é: %d \nMaior é: %d\nSoma:%d", menor, maior, somaTotal);
    }
}

Resposta:
Menor é: 8
Maior é: 65
Soma:107

Abraço!!!

Cara, então pelo o que eu entendi no seu, você ja definiu qual é o maior e o menor, você não fez o programa achar qual era certo?

E eu consegui fazer o meu dar certo:

public class Array2 {

	public static void main(String[] args) {

		Integer notas[] = new Integer[5];
		int maior = 0;
		notas[0] = 3;
		notas[1] = 8;
		notas[2] = 12;
		notas[3] = 15;
		notas[4] = 7;
		int menor = Integer.MAX_VALUE; // MAX_VALUE é o maior valor que pode ser usado em Java.
		int notaFinal = 0;

		for (int i = 0; i < notas.length; i++) {

			if (notas[i] < menor) {
				menor = notas[i]; //Procura qual a menor nota
			}

			if (notas[i] > maior) {
				maior = notas[i]; //Procura qual a maior nota
			}

			notaFinal = notaFinal + notas[i];
						

		}
		System.out.println(notaFinal-menor-maior); // Exibe a soma das notas desprezando a maior e a menor nota
		System.out.println(menor);
		System.out.println(maior);
	}
}

Eu estava fazendo a subtração dentro do for, depois que percebi que teria que fazer fora do for :D

LucasAdri07

Consegui montar um usando o JOptionPane, nesse caso o usuario digitara o valor da nota:

import javax.swing.JOptionPane;

public class Array2 {

	public static void main(String[] args) {

		Integer notas[] = new Integer[5];
		int maior = 0;
		
		int menor = Integer.MAX_VALUE;
		int notaFinal = 0;

		notas[0] = Integer.parseInt(JOptionPane.showInputDialog("Digite uma nota")); // Joga o valor digita pelo usuario na posição 0
		notas[1] = Integer.parseInt(JOptionPane.showInputDialog("Digite uma nota")); // Joga o valor digita pelo usuario na posição 1
		notas[2] = Integer.parseInt(JOptionPane.showInputDialog("Digite uma nota")); // Joga o valor digita pelo usuario na posição 2
		notas[3] = Integer.parseInt(JOptionPane.showInputDialog("Digite uma nota")); // Joga o valor digita pelo usuario na posição 3
		notas[4] = Integer.parseInt(JOptionPane.showInputDialog("Digite uma nota")); // Joga o valor digita pelo usuario na posição 4
		
		for (int i = 0; i < notas.length; i++) {

			if (notas[i] < menor) {
				menor = notas[i];
			}

			if (notas[i] > maior) {
				maior = notas[i];
			}

			notaFinal = notaFinal + notas[i];
						

		}
		JOptionPane.showMessageDialog(null, "Soma das notas desprezando a maior e a menor nota: " + (notaFinal-menor-maior));
		JOptionPane.showMessageDialog(null,
				"Menor nota: " + menor);
		JOptionPane.showMessageDialog(null,
				"Maior nota: " + maior);
	}

Só que eu tenho uma duvida, por exemplo o o cliente tem que digitar em 80 valores (isso é um absurdo, mas estou supondo) eu teria que criar 80 JOptionPane para jogar um valor em cada posição, ou eu posso usar um loop para ele exibir 80 vezes a mensagem e ir jogando o valor para cada posição?

Valeu...

L

Um Loop seria melhor

L

Que tal assim: achei muito legal!!! :slight_smile:

import javax.swing.JOptionPane;

public class MaiorMenor {

	public static void main(String[] args) {
		int valores[] = new int[5];

		String entrada = "";
		// obtendo números do usuário
		for (int input = 0; input <= valores.length - 1; input++) {
			valores[input] = Integer.parseInt(JOptionPane.showInputDialog("Digite um número?"));
			entrada += String.format("%d\n", valores[input]);
		}

		JOptionPane.showMessageDialog(null, "Números digitados:\n"+ entrada);
		
		int menor = valores[0];// Considera a primeira posição como menor
		int maior = valores[valores.length - 1];//considera a última posição maior
		int somaTotal = 0; // soma dos valores exceto o maior e menor

		// Procura pelo maior e menor
		for (int procura = 0; procura <= valores.length - 1; procura++) {
			if (valores[procura] < menor) {
				menor = valores[procura];
			}
			if (valores[procura] > maior) {
				maior = valores[procura];
			}
			somaTotal += valores[procura];
		}
		somaTotal -= (maior+menor);
		// Incrementando um pouco mais,
		String ordenados = "";
		// Ordenando os valores
		for (int i = 0; i < valores.length; i++) {
			for (int j = i; j < valores.length; j++) {
				if (valores[j] < valores[i]) {
					int temp = valores[j];
					valores[j] = valores[i];
					valores[i] = temp;
				}
			}
			ordenados += String.format(" %d ", valores[i]);
		}
		JOptionPane.showMessageDialog(null, "Em ordem:\n" + ordenados);
		
		String saidaFinal = String.format("Menor: %d\nMaior: %d\nSoma: %d (Menos maior e menor)", menor, maior, somaTotal);
		JOptionPane.showMessageDialog(null, saidaFinal);
	}
}

o que você acha?

Criado 30 de junho de 2010
Ultima resposta 1 de jul. de 2010
Respostas 32
Participantes 8