Soma de Array

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:

[code]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);
}   

}[/code]

Flw

Desculpa, pode deixar…

[quote=marineli]Isso, não vou executar.
Mais pra eu executar é só passar valores, certo?[/quote]

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?

Não entendi…

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);

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.

Consegui fazer esse:

[code]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);
}

}[/code]

Se você executar ele ele ira mostrar

3
15

Pois está exibindo o menor e o maior.

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!!!

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

  • é sempre bom testar né…
    vlw

[quote=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!!![/quote]

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:

[code]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);
}

}[/code]

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

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

[code]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);
}[/code]

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…

Um Loop seria melhor

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?