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);
}