Elementos nulos em um array

Olá Pessoal!

Estou a um bom tempo sem programar e devido a isto estou estudando “praticando programação”. Fiz um programa que lê um array de 30 posições com números inteiros e fiz alguns procedimentos e funções neste algoritmo, só que antes de executar estes procedimentos ou funções gostaria que o sistema faça um teste no array (saber se o array foi preenchido com os números ou se esta vazio).

Abaixo segue o programa:
package estruturadedados;

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

/**
 *
 * @author Jairo
 */

public class Exercicio7r2Q7 {

public static int num[] = new int[30];

//procedimento sem parametro para preencher vetor com 30 numeros inteiros
static void lerVetor() {
    String numero, lista = "";
    //int num[] = new int[30];

    //inicio do laço para ler o vetor
    for (int i = 0; i < 30; i++) {
        numero = JOptionPane.showInputDialog("Digite um número");
        num[i] = Integer.parseInt(numero);
        lista += num[i] + "\n";
    }
    JOptionPane.showMessageDialog(null, lista, "Numeros Gravados no Vetor Digitados pelo Usuario", JOptionPane.INFORMATION_MESSAGE);
}

//ao executar este procedimento, quero que faça o teste para saber se o array está nulo   
//procedimento sem parametro para identificar o maior elemento do vetor
static void maiorElemento() {
    int m = 0;
    for (int i = 0; i < 30; i++) {
        if (num[i] > m) {
            m = num[i];
        }
    }
    JOptionPane.showMessageDialog(null, "O maior numero que existe no vetor é: " + m);
}

//ao executar este procedimento, quero que faça o teste para saber se o array está nulo   
//procedimento sem parametro para identificar o menor elemento do vetor
static void menorElemento() {
    int me = num[0];
   
    for (int i = 0; i < 30; i++) {
        if (num[i] < me) {
            me = num[i];
        }
    }
    JOptionPane.showMessageDialog(null, "O menor numero que existe no vetor é: " + me);
}

//ao executar esta funcao, quero que faça o teste para saber se o array está nulo   
//função sem parametro que efetua a soma dos elementos do vetor
static int soma() {
    int total = 0;
    for (int i = 0; i < 30; i++) {
        total += num[i];
    }
    JOptionPane.showMessageDialog(null, "A soma dos elementos do vetor é: " + total);
    return total;
}

//ao executar esta funcao, quero que faça o teste para saber se o array está nulo   
//função sem parametro que calcula a media dos elementos do vetor
static double media() {
    int total = 0;
    double resultado = 0;
    
    for (int i = 0; i < 30; i++) {
        total += num[i];
    }
    resultado = total / 30;
    JOptionPane.showMessageDialog(null, "A media dos elementos do vetor é: " + resultado);
    return resultado;
}

//ao executar este procedimento, quero que faça o teste para saber se o array está nulo   
//procedimento sem parametro para visualizar o elemento de uma posicao do vetor indicada pelo usuario
static void qualElemento() {
    String numero = "";
    int el = 0;
    numero = JOptionPane.showInputDialog("Digite o numero da posicao que você deseja ver o elemento");
    el = Integer.parseInt(numero);

    for (int i = 0; i < 30; i++) {
        if (el == i) {
            el = num[i];
        }
    }
    JOptionPane.showMessageDialog(null, "O elemento do vetor que esta na posicão solicitada pelo usuario é: " + el);
}

//procedimento sem parametros
static void Sair() {
    System.exit(0);
}

//metodo construtor
public static void main(String args[]) {

    int opcao = -1;

    while (opcao != 0) {
        opcao = Integer.parseInt(JOptionPane.showInputDialog("Escolha a opção:\n"
                + "1 - Preencher Vetor\n"
                + "2 - Maior Elemento\n"
                + "3 - Menor Elemento\n"
                + "4 - Soma\n"
                + "5 - Media\n"
                + "6 - Elemento de uma posição\n"
                + "0 - Sair\n"));


        switch (opcao) {
            case 1:
                lerVetor();
                break;
            case 2:
                maiorElemento();
                break;
            case 3:
                menorElemento();
                break;
            case 4:
                soma();
                break;
            case 5:
                media();
                break;
            case 6:
                qualElemento();
                break;
            case 0:
                Sair();
                break;
            default:
                JOptionPane.showMessageDialog(null, "Digite uma opção existente no menu!");
        }
    }
}
}

Olá,
Acho que este link pode te ajudar com o seu problema com a verificação do array: http://www.guj.com.br/t/como-saber-se-o-array-e-nulo-ou-vazio/191165/5. É uma dúvida que achei no GUJ.

Sobre o seu código eu rodei aqui e está bem legal, mas está com problema no método qualElemento()
Adicione o comando break no final do if, pois caso a entrada do array seja uma sequencia (1,2,3,4,5…), ele vai ficar passando toda hora na condição do if e vai retornar o valor errado da posição.

static void qualElemento() {
    String numero = "";
    int el = 0;
    numero = JOptionPane.showInputDialog("Digite o numero da posicao que você deseja ver o elemento");
    el = Integer.parseInt(numero);

    for (int i = 0; i < 30; i++) {
        if (el == i) {
            el = num[i];
            break;// <---- coloca isso para assim que chegar na posição ele sair do for
        }
    }
    JOptionPane.showMessageDialog(null, "O elemento do vetor que esta na posicão solicitada pelo usuario é: " + el);
}

Olá!

Já tinha visto este link que você enviou, e fiz alguns testes mas não funcionou. Quando acrescento em qualquer um dos procedimentos ou função o comando:
if (num == null || num.length == 0){
lerVetor();
}
e faço o teste executando o programa e escolho uma opção sem preencher o vetor, o sistema me informa que o elemento do vetor é 0(zero), e fecha o programa.
Obrigado pelo break no if!!!

Certo. O seguinte, quando você inicializa o array com o new int[30]; todas as posições do seu array são preenchidos com 0(zero), por padrão para tipos primitivos.

No seu código você pode criar um método que percorra o array inteiro e verifique se todas as posições estão com o valor 0 para fazer o controle para saber se já foi preenchido. Caso todas as posições estejam preenchidas com 0 é porque o usuário ainda não fez o preenchimento.

Veja se consegue criar alguma solução assim.

Uma idéia seria alterar o método lerVetor() para exigir que o usuário informe um número válido. Segue exemplo:

static void lerVetor() {
        String numero, lista = "";
        //int num[] = new int[30];

        //inicio do laço para ler o vetor
        int contador = 0;
        for (int i = contador; i < 30; i++) {
            numero = JOptionPane.showInputDialog("Digite um número");
            try {
                num[i] = Integer.parseInt(numero);
                lista += num[i] + "\n";
                contador++;
            } catch (NumberFormatException ex) {
                JOptionPane.showMessageDialog(null, "Numero inválido. Informe novamente.", "Aviso", JOptionPane.ERROR_MESSAGE);
            }
        }
        JOptionPane.showMessageDialog(null, lista, "Numeros Gravados no Vetor Digitados pelo Usuario", JOptionPane.INFORMATION_MESSAGE);
    }

Olá magalhas!

Problema solucionado, muito Obrigado!
Segue abaixo como ficou o código após a ajuda do magalhas:

public static int num[];

//procedimento sem parametro para preencher vetor com 30 numeros inteiros
static void lerVetor() {
String numero, lista = “”;
//int num[] = new int[30];

    //inicio do laço para ler o vetor
    for (int i = 0; i < 30; i++) {
        numero = JOptionPane.showInputDialog("Digite um número");
        num[i] = Integer.parseInt(numero);
        lista += num[i] + "\n";
    }
    JOptionPane.showMessageDialog(null, lista, "Numeros Gravados no Vetor Digitados pelo Usuario", JOptionPane.INFORMATION_MESSAGE);
}

//procedimento sem parametro para identificar o maior elemento do vetor
static void maiorElemento() {
    int m = 0;
    if (num == null || num.length == 0) {
        JOptionPane.showMessageDialog(null, "O vetor não está preenchido, por favor preencha o vetor!");
    } else {
        for (int i = 0; i < 30; i++) {
            if (num[i] > m) {
                m = num[i];
            }
        }
        JOptionPane.showMessageDialog(null, "O maior numero que existe no vetor é: " + m);
    }
}

//procedimento sem parametro para identificar o menor elemento do vetor
static void menorElemento() {
    if (num == null || num.length == 0) {
        JOptionPane.showMessageDialog(null, "O vetor não está preenchido, por favor preencha o vetor!");
    } else {
        int me = num[0];
        for (int i = 0; i < 30; i++) {
            if (num[i] < me) {
                me = num[i];
            }
        }
        JOptionPane.showMessageDialog(null, "O menor numero que existe no vetor é: " + me);
    }
}

//função sem parametro que efetua a soma dos elementos do vetor
static int soma() {
    int total = 0;
    if (num == null || num.length == 0) {
        JOptionPane.showMessageDialog(null, "O vetor não está preenchido, por favor preencha o vetor!");
    } else {
        for (int i = 0; i < 30; i++) {
            total += num[i];
        }
        JOptionPane.showMessageDialog(null, "A soma dos elementos do vetor é: " + total);
    }
    return total;
}

//função sem parametro que calcula a media dos elementos do vetor
static double media() {
    int total = 0;
    double resultado = 0;
    if (num == null || num.length == 0) {
        JOptionPane.showMessageDialog(null, "O vetor não está preenchido, por favor preencha o vetor!");
    } else {
        for (int i = 0; i < 30; i++) {
            total += num[i];
        }
        resultado = total / 30;
        JOptionPane.showMessageDialog(null, "A media dos elementos do vetor é: " + resultado);
    }
    return resultado;
}

//procedimento sem parametro para visualizar o elemento de uma posicao do vetor indicada pelo usuario
static void qualElemento() {
    String numero = "";
    int el = 0;
    numero = JOptionPane.showInputDialog("Digite o numero da posicao que você deseja ver o elemento");
    el = Integer.parseInt(numero);
    if (num == null || num.length == 0) {
        JOptionPane.showMessageDialog(null, "O vetor não está preenchido, por favor preencha o vetor!");
    } else {
        for (int i = 0; i < 30; i++) {
            if (el == i) {
                el = num[i];
                break;
            }
        }
        JOptionPane.showMessageDialog(null, "O elemento do vetor que esta na posicão solicitada pelo usuario é: " + el);
    }
}

//procedimento sem parametros
static void Sair() {
    System.exit(0);
}