Metodo menor nota

5 respostas
Z

tenho que criar um método que exibe a menor nota de um array[2][4], mas estou com problemas de lógica porque não entendo direito de arrays.
Agradeço qualquer ajuda
Abraços

public static void menornota(double [][]dArrayBid2){

double[] dMenorNota = new double [2];
double soma = 0,  dMenorNota = 0;
int dNota = 0;
int iAluno = 0;

for (iAluno = 0; iAluno < sArrayBid.length; iAluno++) {

	for (dNota = 0; dNota < sArrayBid[iAluno].length; dNota++) {
		
		if (dnota < dMenorNota){ 
		
		dMenorNota = dMenorNota
		
		}</blockquote>

5 Respostas

julianolandim

Boa tarde, fiz um exemplo simples onde eu pego o menor e tambem o maior valor no Array, de uma olhada e tente entender.

/**
 *
 * @author Juliano Landim
 * @date 26/02/2012
 */

package guj;


public class MenorValorNoArray {

    
    double nota[] = new double[10];
    
    public MenorValorNoArray(){
        //definindo valores para no vetor
        nota[0] = 7.0;
        nota[1] = 9.65;
        nota[2] = 9.89;
        nota[3] = 9.9;
        nota[4] = 2.67;
        nota[5] = 9.80;
        nota[6] = 5.5;
        nota[7] = 9.98;
        nota[8] = 6.7;
        nota[9] = 8.10;

        double menor = nota[0]; // nota[0] = 1o. valor armazenado no vetor
        double  maior = nota[0]; // nota[0] = 1o. valor armazenado no vetor
        for (int i = 0; i < nota.length; i++) {
            if (nota[i] < menor) {
                menor = nota[i];
            }
            if (nota[i] > maior) {
                maior = nota[i];
            }
        }
        
        System.out.println("A menor nota é:"+menor);
        System.out.println("A maior nota é:"+maior);
    }
    
    
    public static void main(String args[]){
        new MenorValorNoArray();
    }

}

Resumindo… basta vc fazer como o codigo abaixo:

double menor = nota[0]; // nota[0] = 1o. valor armazenado no vetor
        double  maior = nota[0]; // nota[0] = 1o. valor armazenado no vetor
        for (int i = 0; i < nota.length; i++) {
            if (nota[i] < menor) {
                menor = nota[i];
            }
            if (nota[i] > maior) {
                maior = nota[i];
            }
        }

T+

ribclauport

Mais um código para análise:

package atribuicao;

public class FloatTeste {
	static double menor;
	static double maior;

	public static void menornota(double[][] dArrayBid2) {

		for (int i = 0; i &lt; dArrayBid2.length; i++) {

			for (int j = 0; j &lt; dArrayBid2[i].length; j++) {
				if (i == 0 && j == 0) {
					menor = dArrayBid2[i][j];
					maior = dArrayBid2[i][j];
				} else {
					if (dArrayBid2[i][j] &gt; maior) {
						maior = dArrayBid2[i][j];
					} else if (dArrayBid2[i][j] &lt; menor) {
						menor = dArrayBid2[i][j];
					}

				}
			}
			
		}
		System.out.println(&quot;maior &quot;+maior);
		System.out.println(&quot;menor &quot;+menor);

	}

	public static void main(String[] args) {
		double[][] matriz = new double[][] { { 19, 2 }, { 3, 4 }, { 5, 6 },	{ 7, 8 } };
		menornota(matriz);
	}
}
AnjoVingador
ribclauport:
Mais um código para análise:
package atribuicao;

public class FloatTeste {
	static double menor;
	static double maior;

	public static void menornota(double[][] dArrayBid2) {

		for (int i = 0; i &lt; dArrayBid2.length; i++) {

			for (int j = 0; j &lt; dArrayBid2[i].length; j++) {
				if (i == 0 && j == 0) {
					menor = dArrayBid2[i][j];
					maior = dArrayBid2[i][j];
				} else {
					if (dArrayBid2[i][j] &gt; maior) {
						maior = dArrayBid2[i][j];
					} else if (dArrayBid2[i][j] &lt; menor) {
						menor = dArrayBid2[i][j];
					}

				}
			}
			
		}
		System.out.println(&quot;maior &quot;+maior);
		System.out.println(&quot;menor &quot;+menor);

	}

	public static void main(String[] args) {
		double[][] matriz = new double[][] { { 19, 2 }, { 3, 4 }, { 5, 6 },	{ 7, 8 } };
		menornota(matriz);
	}
}
Porque não usam for aprimorado?
public static void menornota(double[][] dArrayBid2) {
        double menor = 0;
        double maior = 0;
        for (double[] i : dArrayBid2) {
            for (double j : i) {
                if (maior == 0 && menor == 0) {
                    maior = j;
                    menor = j;
                    continue;
                }
                if (j &gt; maior) {
                    maior = j;
                } else if (j &lt; menor) {
                    menor = j;
                }

            }
        }

        System.out.println(&quot;maior &quot; + maior);
        System.out.println(&quot;menor &quot; + menor);

    }
Ficando assim.
ribclauport

Primeiro motivo:
A pergunta foi a respeito do algoritmo, e no codigo original do usuário não estava com for aprimorado.

Segundo motivo:
Não há garantia, que o usuário esta usando java 5, e apesar de já estarmos no java 7 ninguém garante isso, já que não há evidências no código postado
que o usuário tem java 5.

Terceiro motivo:
Quando um usuário demonstra que está iniciando a idéia que aprenda primeiro andar para depois correr, para “aprimorar” tem que saber o que aprimorar,
como aprimorar um for se voce não sabe a forma básica?

Espero ter respondido a questão.

AnjoVingador

Você tem razão cara, não percebi estes pontos.
E minha intenção não foi colocar a prova seu conhecimento, me desculpe se pareceu isso.
Mas valeu por expor os motivos.

Agora pelo menos ele já tem o exemplo dos dois “for”.

Criado 26 de fevereiro de 2012
Ultima resposta 27 de fev. de 2012
Respostas 5
Participantes 4