Olá Pessoal!
Fiz um código utilizando o laço for, gostaria de utilizar a função break na iteração de numero 2. Como está descrito no código abaixo:
//inicio do metodo construtor
public static void main(String args[]) {
int numero[] = new int[3];
int menor, maior, x = 1, cont = 0;
String op, num = null;
for (int i = 0; i < 3; i++) {
num = JOptionPane.showInputDialog("Digite um numero inteiro:");
numero[i] = Integer.parseInt(num);
cont++;
if(cont == 2){
break;
}//AQUI USO O COMANDO BREAK PARA SUSPENDER O LAÇO FOR
}
for (int i = 0; i < 3; i++) {
menor = i;
x = numero[i];
//System.out.println("x=numero[i]: " + x);
for (int j = i + 1; j < 3; j++) {
if (numero[j] < x) {
menor = j;
//System.out.println("menor = j: " + menor);
x = numero[j];
//System.out.println("x=numero[j]: " + x);
}//fim do se
}//fim do laco interno
numero[menor] = numero[i];
//System.out.println("numero[menor] = numero[i]: " + numero[menor]);
numero[i] = x;
//System.out.println("numero[i] = x: " + numero[i]);
}//fim do laço for externo
for (int i = 0; i < 3; i++) {
if(numero[i] != 0){
System.out.printf("%5d", numero[i]);
}
}
}//fim do metodo construtor
OBS.: NO 1º LAÇO FOR UTILIZEI UMA CONDIÇÃO PARA O COMANDO BREAK, MAS CASO NÃO COLOQUE OUTRA CONDIÇÃO NO ULTIMO LAÇO FOR, ONDE NÃO FOI DIGITADO NUMERO ALGUM, O SISTEMA COLOCA O NUMERO ZERO.
COMO CORRIGIR ISTO?
Olá,
Na sua descrição do problema não estar bem claro o que você esta precisando, mas analisando o código fiz algumas alterações.
1 - Retirei do primeiro laço o If e o break, pois não vi muito propósito, pois estava impedindo que o sistema pedisse o 3º numero.
2 - Percebi que quando o usuário não digitava numero algum o sistema lançava uma exceção, pois você tentava transformar um valor NULL em INT, ai não rolava, então coloquei um IF que checa se o valor recebido é Vazio (Empty) e caso seja a variável recebe um zero.
3 - Por fim retirei um If no ultimo for que impedia a escrita do numero se caso fosse 0.
Ao meu ver esta tudo funcionando normal;
int numero[] = new int[3];
int menor, maior, x = 1, cont = 0;
String op, num = null;
for (int i = 0; i < 3; i++) {
num = JOptionPane.showInputDialog("Digite um numero inteiro:");
if(num.isEmpty()){
num = "0";
}
numero[i] = Integer.parseInt(num);
cont++;
}
for (int i = 0; i < 3; i++) {
menor = i;
x = numero[i];
//System.out.println("x=numero[i]: " + x);
for (int j = i + 1; j < 3; j++) {
if (numero[j] < x) {
menor = j;
//System.out.println("menor = j: " + menor);
x = numero[j];
//System.out.println("x=numero[j]: " + x);
}//fim do se
}//fim do laco interno
numero[menor] = numero[i];
//System.out.println("numero[menor] = numero[i]: " + numero[menor]);
numero[i] = x;
//System.out.println("numero[i] = x: " + numero[i]);
}//fim do laço for externo
for (int i = 0; i < 3; i++) {
System.out.printf("%5d", numero[i]);
}
Olá andrebmarinho!
Me desculpe por não ter passado na escrita a minha dificuldade na solução do código.
1 - Fiz o break justamente para o laço não ir até o índice 3. Desejo Mostrar a Ordenação antes do termino do laço for, que vai até 3, ou seja, quando ele chegar no índice 2 o sistema pergunta para o usuário o 3º numero para a ordenação.
2 - fiz a seguinte alteração; no if existente no break alterei de cont == 2 para cont == 3, removi o if no ultimo laço for e funcionou como estava querendo
3 - Acho que agora ele não vai passar valor null.