Jump to content

preenchendo uma matriz ...


Recommended Posts

Posted

boas malta, é o meu primeiro (de muitos, espero eu!) post neste forum!

e tou a fazê-lo sem apresentação prévia, pois tou mesmo todo baralhado das ideias relativamente a esta questão.

tenho uma matriz criada, de 6x6 ...

quero que ela seja preenchida pelo User casa a casa, contudo, nao quero que permita deixar passar casas "em branco", vazias ... como faço isso???

mostro-vos o meu código ...

 public static void main(String[] args) {
        int[][] mat=new int[6][6];
        for(int i=0;i<6;i++){
            for(int j=0;j<6;j++){
               
               mat[i][j]=Integer.parseInt(JOptionPane.showInputDialog("introduza valor para"+i+" "+j));
             
    }
}
    }

atenção, isso nao tá em nenhum método, pois era por mera curiosidade que eu estava a elaborar este código para compreender melhor uns exercícios e exemplos que vi por aí ... daí eu não me "preocupar" com a arrumação disso!!!

Posted

Antes de atribuires o valor devolvido pelo utilizador deves verificar se o utilizador introduziu alguma coisa, por exemplo verificando se a string devolvida está vazia, podes usar o método isEmpty() das strings. Depois disso deves colocar o método parseInt dentro de um bloco try/catch porque o utilizador pode introduzir um texto em vez de um número e o método parseInt vai lançar uma excepção.

No fim, se tudo estiver correcto fazes a atribuição do número, senão pedes novamente o input. Para fazeres esta repetição podes usar um método while.

Espero não ter dado a solução 🙂

Posted

boas, respondeste sim ... nao usei o isEmpty() mas usei o isNumber ... pois ainda nao dei a materia dos try/catch....embora ela esteja presente na ajuda que me deram...

vou meter aqui a minha soluçao (com a ajuda de um colega meu 🙂 )

   String txt;  //cria uma variavel de texto que vai ser o texto inserido pela pessoa
        boolean numero;  //cria uma variavel de booleana que vai dizer se o numero é numero ou não
        int num = 0;  //cria uma variavel de texto que vai ser o texto inserido pela pessoa
        for (int i = 0; i < 6; i++) {
            for (int j = 0; j < 6; j++) {
                do {
                    numero = true;
                    txt = JOptionPane.showInputDialog("Introduza o valor para" + i + " " + j);  //a pessoa insere o texto
                    try {
                        num = Integer.parseInt(txt);
                    } catch (NumberFormatException nfe) {
                        numero = false;
                    }
                } while (numero == false);  //se não for, pede outro
      mat[i][j]=Integer.parseInt(txt);  //quando for um numero, chega aqui e converte para int e manda para a matriz
            }
        }
Posted

Uma alternativa mais condensada. Atenção que escrevi isto sem testar, é possível que tenha um ou outro erro mas está cá a ideia.

int[][] mat = new int[6][6];
String txt;  //cria uma variavel de texto que vai ser o texto inserido pela pessoa
boolean numero;  //cria uma variavel de booleana que vai dizer se o numero é numero ou não
int j; //desta forma não se cria uma variável nova a cada iteração do for principal.
boolean isNumber;
for (int i = 0; i < mat.lenght; i++) { //usar o comprimento do vector principal
                                                //assim podes mudar o tamanho na declaração sem problemas.
    for (j = 0; j < mat[i].length; j++) { //Mesmo principio que anteriormente, 
                                                    //mas permite vectores secundários de tamanhos diferentes
        isNumber = false;
        while(!isNumber) {
            try {
                mat[i][j] = Integer.parseInt(JOptionPane.showInputDialog("Introduza o valor para" + i + " " + j));
                isNumber = true;
            } catch() {
                //ignore
                //Podiamos colocar o 'number' a false mas não vale a pena, ele nunca passou a true 
                //enquanto existiram erros
            }
        }
    }
}

Quando falo em vector principal e vector secundário, é como dizer linhas e colunas de uma matriz. Uma matriz não é mais que um vector de vectores, em que em cada posição do vector principal, dado pelo i ou as linhas, existe um outro vector, dado pelo j ou as colunas. Em Java um vector de vectores não precisa ser quadrado/rectangular, podendo ter linhas com números de colunas diferentes.

Posted

sim, tens aí alguns "truques" ... e como eu ainda sou um "noobzito" (1º ano do curso )

perfiro ter aquilo tudo tim tim por tim tim , que com esses "atalhos", pois assim nao me perco tanto 🙂

mas mesmo assim, é bom saber, e ir ficando a saber, que existem "N " maneiras de se fazer a mesma coisa.

bgd.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.