[Resolvido]Duvida com Loop

10 respostas
LucasAdri07

Olá pessoal, tenho o seguinte:

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"));
		notas[1] = Integer.parseInt(JOptionPane.showInputDialog("Digite uma nota"));
		notas[2] = Integer.parseInt(JOptionPane.showInputDialog("Digite uma nota"));
		notas[3] = Integer.parseInt(JOptionPane.showInputDialog("Digite uma nota"));
		notas[4] = Integer.parseInt(JOptionPane.showInputDialog("Digite uma nota"));
		
		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);
	}
}

E tenho uma duvida, se eu quiser usar um loop nesse JOptionPane, para eu não ter que digitar os 6 JOptionPane, como eu poderia usar o loop.
Pois por exemplo, se a pessoa tivesse que digitar 30 numeros, eu teria que fazer 30 JOptionPane, para receber cada numero, isso ficaria estranho.

Queria uma luz de como usar eese loop.

Valeu :)

10 Respostas

ViniGodoy
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;
		
		for (int i = 0; i < notas.length; i++) {
			notas[i] = Integer.parseInt(JOptionPane.showInputDialog("Digite uma nota"));
			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);
	}
}
LucasAdri07
ViniGodoy:
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;
		
		for (int i = 0; i < notas.length; i++) {
			notas[i] = Integer.parseInt(JOptionPane.showInputDialog("Digite uma nota"));
			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);
	}
}

Viny, então é só você passar que notas[i] (i significa linha, não é?) vai receber o JOptionPane então?

Valeu

ViniGodoy

Dentro daquele for, i é o índice da nota que está sendo lida. O for varia de 0 até 4.

Eder_Peixoto

Olá Lucas,

i é o índice (posição, sendo zero a primeira) do teu array.

LucasAdri07

Hmm, entendo, só uma duvida que tenho, por exemlo se eu quizesse por por exemplo:

JOptionPane.showInputDialog("Digite a primeira nota"); JOptionPane.showInputDialog("Digite a segunda nota");

E assim por diante até chegar a 5ª nota.

Teria que fazer colocando JOptionPane por JOptionPane, pois o loop não me permite por exemplo só mudar a segunda palavra da mensagem.

Valeu.

jyoshiriro

Amigo, colocar as palavras “primeiro”, “segundo”, etc seria complicado.

Mas “1a.”, “2a.”, etc é fácil.

JOptionPane.showInputDialog("Digite a "+(i+1)+"a. nota");
LucasAdri07

jyoshiriro:
Amigo, colocar as palavras “primeiro”, “segundo”, etc seria complicado.

Mas “1a.”, “2a.”, etc é fácil.

JOptionPane.showInputDialog("Digite a "+(i+1)+"a. nota");

É eu fiz isso Integer.parseInt(JOptionPane.showInputDialog(null, "Digite a nota n° " +(i+1)));

Só tinha duvida mesmo quanto as palavras, mais ja que é meio complicado :frowning:

Mais valeu :smiley:

Eder_Peixoto

Crie um array contendo as cinco palavras:

final String[] palavras = new String[ 5 ];
palavras[0] = "primeiro";
palavras[1] = "segundo";
palavras[2] = "terceiro";
palavras[3] = "quarto";
palavras[4] = "quinto";

No loop, você irá acessando cada posição do array.

É uma alternativa!

LucasAdri07
Eder Peixoto:
Crie um array contendo as cinco palavras:
final String[] palavras = new String[ 5 ];
palavras[0] = "primeiro";
palavras[1] = "segundo";
palavras[2] = "terceiro";
palavras[3] = "quarto";
palavras[4] = "quinto";

No loop, você irá acessando cada posição do array.

É uma alternativa!

Valeu cara, deu certo.

Ficou assim :

final String[] palavras = new String[ 5 ];
		palavras[0] = "primeira";
		palavras[1] = "segunda";
		palavras[2] = "terceira";
		palavras[3] = "quarta";
		palavras[4] = "quinta";

		
		for (int i = 0; i < notas.length; i++) {
			notas[i] = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite a "+ palavras[i]+" nota"));

E pelo que eu entendi esse final antes de String, não permite que seja alterado, certo?

Eder_Peixoto

O uso de final para variáveis não primitivas significa que após informada uma referência, essa não poderá ser alterada.

Criado 5 de julho de 2010
Ultima resposta 8 de jul. de 2010
Respostas 10
Participantes 4