helpi :( Java primeiro trabalho

paperless

Power Member
Boa tarde, tenho um primeiro trabalho de Java para fazer mas estou com duvidas aqui numas coisas...

Estou mesmo a nadar aqui.

O que tenho de fazer é verificar se determinados valores de uma matriz (bidimensional) estão dentro de um certo limite (neste caso 0 e 9).

Se estiverem tenho que printar a matriz e uma frase de confirmaçao a dizer que é valida se não tenho de printar a matriz e dizer que não tem nenhum valor entre 0 e 9.


Onde eu estou com problemas é fazer essa verificação, não sei mesmo como é que posso fazer isso (sem ser manualmente entrada a entrada e isso não quero porque tem de dar para uma qualquer matriz).
 
Última edição:
Por exemplo, com este código quer a matriz esteja bem ou mal aquilo faz o que está no if (por isso nem ponho o else aqui).

O que estara mal?

Código:
for (int linha = 0; linha != matriz_a_usar.length; linha++) {

    for (int coluna = 0; coluna != matriz_a_usar[linha].length; coluna++)

    {


        if (matriz_a_usar[linha][coluna] >= 0 && matriz_a_usar[linha][coluna] <= 9)
        {
            System.out.print( + matriz_a_usar[linha][coluna] + " ");
        }
 
Suponho que o tipo de dados que a matriz admite seja inteiros, certo?

Já agora, porquê o "mais" logo após o abre parêntesis?

Código:
System.out.print( + matriz_a_usar[linha][coluna] + " ");[/quote]

Não percebi a utilidade disso.
 
ah ok.

as matrizes estão declaradas desta forma (que não posso alterar):

Código:
     int[][] matriz_correcta = {{1, 0, 3, 0, 0, 5, 6, 0, 0},
                {0, 0, 0, 0, 0, 0, 0, 0, 0},
                {0, 0, 0, 7, 0, 0, 0, 0, 0},
                {0, 0, 0, 8, 0, 0, 0, 4, 0},
                {0, 0, 2, 0, 0, 0, 0, 6, 0},
                {0, 0, 4, 0, 0, 0, 0, 0, 0},
                {0, 0, 5, 0, 0, 0, 0, 0, 0},
                {0, 0, 9, 0, 0, 0, 0, 0, 0}};
Depois no restante código aparece matriz_a_usar porque antes diz-se que ela é igual ou à correcta ou à incorrecta, para que se faça o teste rapidamente.
 
Tipo..., já olhaste para o conteúdo da matriz? :X

É TUDO maior ou igual a 0 e TUDO menor ou igual a 9..., é normal imprimir sempre tudo :x
 
Eu sei mas quando testava com a matriz incorrecta (ja num estado mais a frente do que nesse meu outro post) o texto de erro suposto aparecia no lugar dos numeros.

Ja apaguei isso, agora tou a fazer as coisas em separado e primeiro tou a printar a matriz e depois (quando souber como) é que vou por o texto de erro ou sucesso.

Código:
int[][] matriz_incorrecta = {{1, 0, 3, 0, 0, 5, 6, 0, 0},
                {0, 0, 0, 0, 0, 0, 0, 0, 0},
                {0, 0, 0, 7, 0, 0, 0, 0, 0},
                {0, 0, 0, 8, 0, 0, 0, 4, 0},
                {0, 0, 2, 0, 0, 0, 0, 6, 0},
                {0, 0, 4, 0, 0, 0, 0, 0, 0},
                {0, 0, 5, 0, 0, 0, 0, 0, 11},
                {0, 0, 9, 0, 0, 0, 0, -1, 0}};
 
Isto vai parecer parvo..., mas experimenta isto:

substituir isto:
Código:
if (matriz_a_usar[linha][coluna] >= 0 && matriz_a_usar[linha][coluna] <= 9)

Por isto:

Código:
if ((matriz_a_usar[linha][coluna] >= 0) && (matriz_a_usar[linha][coluna] <= 9))

Não me recordo de qual é a prioridade dos operadores de comparação, julgo que a tua linha estava correcta, no entanto mete estes parêntesis para garantir que as comparações são feitas como queremos.

Não vejo qualquer problema no teu código, o único local onde pode haver maravilha é aí..., ou então também estou cego :x às vezes os erros são coisas tão triviais que dá vontade de bater com a cabeça na parede :P Estamos horas em frente ao código e nunca os vemos :P
 
Já pus, funciona a mesma mas onde eu estou mesmo com dificuldades não é a printar a matriz é a poder "ver" se os valores estão entre 0 e 9 ou não para poder dar as tais mensagens.

Experimentei:

Código:
(...)
int valor[][] = matriz_a_usar;
         
         for (int linha = 0; linha != matriz_a_usar.length; linha++) {

                for (int coluna = 0; coluna != matriz_a_usar[linha].length; coluna++)
                    
                    if (valor >= 0 && valor <= 9)
(...)
So que nao da porque o proprio eclipse diz que não da para fazer essas comparações, é este o principio?
É para usar a cadeia de fors da mesma forma, certo?
 
Claro que não, estás a tentar comparar um array bi-dimensional com um inteiro, é óbvio que dá erro.

Tens de aceder à posição (como inicialmente).

Experimenta o código que te dei ;)
 
Nem tinha reparado que aquilo era if, pensava que aquilo era o for peço desculpa.

Bem...não dá, o resultado (com a matriz incorrecta) é este:

1 0 3 0 0 5 6 0 0
0 0 0 0 0 0 0 0 0
0 0 0 7 0 0 0 0 0
0 0 0 8 0 0 0 4 0
0 0 2 0 0 0 0 6 0
0 0 4 0 0 0 0 0 0
0 0 5 0 0 0 0 0 11
0 0 9 0 0 0 0 -1 0
Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Incorrecta (contém valores fora do intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])Matriz Incorrecta (contém valores fora do intervalo [0-9])Matriz Correcta (todos os valores estão no intervalo [0-9])
Ou seja, ele (por causa de mim) printa uma frase para cada valor da matriz e no sitio em que "estariam" (na matriz) os valores inválidos aparece matriz incorrecta. :lol:

O código inteiro é este:

Código:
for (int linha = 0; linha != matriz_a_usar.length; linha++) {

    for (int coluna = 0; coluna != matriz_a_usar[linha].length; coluna++)
        
        System.out.print(matriz_a_usar[linha][coluna] + " ");
        System.out.println();
}
        
         
         for (int linha = 0; linha != matriz_a_usar.length; linha++) {

                for (int coluna = 0; coluna != matriz_a_usar[linha].length; coluna++)
                    
            if ((matriz_a_usar[linha][coluna] >= 0) && (matriz_a_usar[linha][coluna] <= 9))
            
                System.out.print("Matriz Correcta (todos os valores estão no intervalo [0-9])");
            
                else 
                    
                    System.out.print("Matriz Incorrecta (contém valores fora do intervalo [0-9])");
 
Última edição:
O que eu queria era que se houvesse um valor que fosse incorrecto aquilo dissesse logo que a matriz era incorrecta (uma vez) e se não houvesse que dissesse que a matriz era correcta.
 
ahhh, podias ter dito logo :P

Então tens de criar uma variável de controlo para isso ;)

Define ANTES do for:
Código:
int CHECK = 0;

Na condição do for mete o seguinte:
Código:
for (int linha = 0; linha != matriz_a_usar.length || [B]CHECK != 1[/B]; linha++) { 
     for (int coluna = 0; coluna != matriz_a_usar[linha].length || [B]CHECK != 1[/B]; coluna++)

Dentro do else adiciona esta linha:
Código:
CHECK = 1;

Isto deve dar ;)
 
Back
Topo