[RESPONDIDO]Matriz de array, podem ajudar nesse probleminha?

12 respostas
dheyfesson

to querendo armazenar um numero na primeira posição da matriz, mas nao esta funcionando
podem me ajudar a descobrir o que esta errado?

12 Respostas

douglas_vidotto

O problema esta na declaração do array G. Assim como no array m que voce fez acima, no G voce também deve alocar o tamanho da memória com new int, ou com posições entre chaves {}.

O correto seria int G[][] = new int[1][0];

Starlya

sim vc tem que declarar a matriz G tbm, senaum ela n será iniciada

int[][] G=new int[nlinhas][ncolunas]
dheyfesson

num deu certo!! na verdade ja havia feito isso e tava fazendo uns testes e acabei postando o array como G mas na verdade e m.

aparecem estes erros

Starlya

então se vc jah declarou pq vc pois o int de novo na frente do G[1][0] ???

n seria soh

G[1][0]=suavariavel;
Starlya

eu compilei esse codigo abaixo akie n deu nenhum erro....

public void Generais() {
int[][] G=new int[10][10];
    
Scanner sc = new Scanner(System.in);
System.out.println("Informe qual será a mensagem do comandante: 1 para ATACAR ou 0 para RECUAR");
int msgComandante = sc.nextInt();
System.out.println("A mensagem do comandante foi: " + (msgComandante == 1? "ATACAR":"RECUAR"));// ate aqui deu certo!!!

System.out.println("Informe o carater do general 1: 1 para FIEL ou 0 para TRAIDOR");
G[1][0] = sc.nextInt();// aqui esta o problema!!!
System.out.println("O general1 é: " + (G[1][0] == 1? "FIEL":"TRAIDOR"));
//quero pegar o numero digitado pelo usuario e armazenar na primeira posição da matriz 
    }

quanto ao erro "a varialvel oculta um campo" eh pq vc deve tah pondo o mesmo nome em uma variavel e algum componente da sua interface....

dheyfesson

.

dheyfesson

aew brigadão Starlya!!! :smiley:

sem querer abusar tenho mais uma perguntinha :shock: , quero melhorar esse codigo fazendo com que seja aceito apenas os numeros 0 ou 1, porque com o if ternario so é verificado o 1, e qualquer numero diferente de 1 é aceito.

cabe mais essa mazinha ai??? :wink:

Luciano_Matheus

Olá dheyfesson!

Sou novo aqui no Fórum e tb iniciante na programação Java, mas acho que essa questão eu posso te ajudar.

É bem simples: vc vai ter que usar, ao invés do if ternary, ifs encadeados. Um if vai testar o 0, o outro vai testar o 1 e qualquer número diferente destes exibe mensagem de número inválido.

Vai ficar assim:

if (G[1][0] == 1){

System.out.println(O general1 é FIEL);}

else {

if (G[1][0] == 0){

System.out.println(O general1 é TRAIDOR);}

else {

System.out.println(Número inválido!);

}

}

Vlw!

C

Por favor, formatem o tópico igual ao tópico: http://www.guj.com.br/posts/list/50115.java

Luciano_Matheus

Desculpem a minha formatação, mas só depois que enviei a mensagem é que eu li o tópico citado acima.

Os próximos códigos serão formatados.

Vlw!!!

dheyfesson

Luciano Matheus:
Olá dheyfesson!

if (G[1][0] == 1){

System.out.println(O general1 é FIEL);}

else {

if (G[1][0] == 0){

System.out.println(O general1 é TRAIDOR);}

else {

System.out.println(Número inválido!);

}

}

Vlw!

queria uma maneira mais simplificada, essa matriz tem apenas 7 elementos G[1][0]… G[7][0], se tivesse uma matriz com centenas de elementos teria que fazer um monte de if’s, quero um jeito mais pratico para tratar isso!!!

mas velew pela tentativa.

rmendes08

Para isso você pode usar um loop for para iterar sobre cada coluna da matriz, e um loop while para aceitar somente os números 1 e 0:

for( int i = 1 ; i <=7 ; i++ ){

    do{
         System.out.println("Informe o carater do general " + i + ": 1 para FIEL ou 0 para TRAIDOR");
         m[i][0] = sc.nextInt();
    }while( m[i][0] != 0 && m[i][0] != 1 ); //&& é operador lógico E

    System.out.println("O general1 é: " + (G[1][0] == 1? "FIEL":"TRAIDOR"));
}
Criado 15 de setembro de 2008
Ultima resposta 15 de set. de 2008
Respostas 12
Participantes 6