Ajuda condição break!

Boa tarde pessoal,

Preciso fazer um programa que armazena 5 nomes em um vetor e sorteia um deles, consegui fazer isso, porém como sou meio chato, gostaria de fazer com que se o valor for nulo ele dava um break na condição for, mas não está funcionando, podem me ajudar?

Segue o código:

import javax.swing.JOptionPane;
import java.util.Random;

public class Exercicio0902 {
	public static void main(String[] args) {
		
		Random rdm = new Random();
		String nome[] = new String[5];
		
		for (int i = 1; i < 6; i++){
			String str = "Nome da " + i + "ª pessoa";
			String aux = JOptionPane.showInputDialog(str);
			aux = aux.trim();
			if (aux == null || aux == "")break;
			nome[i - 1] = aux;
			}
		
		String sorteio = nome[rdm.nextInt(5)];
		String str = "Pessoal sorteada: " + sorteio;
		JOptionPane.showMessageDialog(null, str);
		
	}

}

Fico no aguardo.

Obrigado!

nao seria assim?

if (aux == null || aux == “”){
nome[i - 1] = aux;
break;

};

Fala Artur!

Eu já tive essa dúvida, esse tópico que o pessoal me respondeu vai te esclarecer legal:

http://www.guj.com.br/java/294061-entrada-de-dados-em-txt—parar-de-solicitar-a-entrada-quando-for-inserida-uma-linha-em-branco#1560779

Mas resumidamente, comparação de objetos (no seu caso do tipo String) é assim:

if(aux.equals(""))...

Aí no seu código ficaria:

if(aux.equals(""))break;

Valeu!

Ficaria assim (eu acho, não sei se o que eu entendi é o que vc deseja):

rotulo:
 for (int i = 1; i < 6; i++){  
            String str = "Nome da " + i + "ª pessoa";  
            String aux = JOptionPane.showInputDialog(str);  
            aux = aux.trim();  
            if (aux == null || aux == ""){
                 break rotulo;  
            }
            nome[i - 1] = aux;  
            }  

@Edit: o rotulo indica qual laço você quer que pare quando a condição for true(sou novato, me digam se alguem achar algum erro no q estou dizendo);

Se é um laço só, não precisa do rótulo. É só colocar break e pronto.

acho que é isso que você queria fazer

[code]public static void main(String[] args) {

    Random rdm = new Random();  
    String nome[] = new String[5];  
      
    for (int i = 0; i &lt; 5; i++){  
        String str = &quot;Nome da &quot; + i + &quot;ª pessoa&quot;;  
        String aux = JOptionPane.showInputDialog(str);  
        aux = aux.trim();  
        if (aux == null || aux.equals(&quot;&quot;))break;  
        nome[i] = aux;  
        }  
      
    String sorteio = nome[rdm.nextInt(5)];  
    String str = &quot;Pessoal sorteada: &quot; + sorteio;  
    JOptionPane.showMessageDialog(null, str);  
      
}  [/code]

Obrigado pessoal.

Vou testar as opções.

vlw!

Pessoal, o problema ali não é o break. Mas o fato dele estar fazendo trim() no aux, quando aux pode retornar nulo.
E tentar fazer trim() num objeto nulo é NullPointerException.

Além disso, para testar se uma String é vazia, pode-se testar com length() == 0 ou equals(""). Entretanto, a melhor prática é usar o isEmpty().

O código correto seria:

[code] public static void main(String[] args) {
String nomes[] = new String[5];

    int num = 0;
    while (num &lt; nomes.length) {
        String nome = JOptionPane.showInputDialog(&quot;Nome da &quot; + (num + 1) + &quot;ª pessoa&quot;);
        nome = nome == null ? &quot;&quot; : nome.trim();
        if (nome.isEmpty()) {
            break;
        }
        nomes[num++] = nome;
    }

    if (num != 0) {
        String sorteio = nomes[new Random().nextInt(num)];
        JOptionPane.showMessageDialog(null, &quot;Pessoa sorteada: &quot; + sorteio);
    }
}

[/code]

Verdade ViniGodoy, você tinha falado sobre o .isEmpty() na minha pergunta. Por questão de curiosidade e para aprender, por que o isEmpty é uma prática melhor que as outras?

Obrigado!

Por que ele descreve exatamente qual é a sua intenção com aquele código.
Isso permite que quem faz a implementação de String defina a estratégia mais eficiente possível para fazer esse teste.

Muito obrigado! :thumbup: