Como ler uma matriz?

[code]
for(i =1; i<=p.length -1; i++){
for(int j =1;j<=p.length -1; j++){

        System.out.println("Qual o valor do " +i +  " elemento da linha?");
         p[i][j]=ler.nextInt();
         System.out.println("Qual o valor do " +j +  " elemento da coluna?");
         p[i][j]=ler.nextInt();
        }
        
        }[/code]

Eu sei que pela lógica, esse código vai mostrar
Qual o valor do 1 elemento da linha?

Qual o valor do 1 elemento da coluna?

Qual o valor do 1 elemento da linha?

Mas não estou sabendo como consertar isso.

Suspeito desse p[i][j]=ler.nextInt(). Na primeira lida ele tem que ler na posição p[i] [j]e na segunda tbm?
Estou com dificuldade de me orientar nessa matriz.

amigo você quer ler a matrix inteira ??
não entendi o que você quis dizer !!!

Ler uma matriz 4x5.

Primeiro, eu coloquei um for pra ler as linhas e outro for, pras colunas. Mas está acontecendo esse problema aí.

  1. for(i =1; i<=p.length -1; i++){
  2.         for(int j =1;j<=p.length -1; j++){  
    
  3.         System.out.println("Qual o valor do " +i +  " elemento da linha?");  
    
  4.          p[i][j]=ler.nextInt();  
    
  5.          System.out.println("Qual o valor do " +j +  " elemento da coluna?");  
    
  6.          p[i][j]=ler.nextInt();  
    
  7.         }  
    
  8.         }  
    

bom, é o seguinte, este codigo seu esta imprimindo todos os valores duas vezes, vc não precisa colocar uma legenda para ler os valores de i e nem os valores de j.

lembre-se que em uma matriz sempre vai ter duas posições, a da linha e a da coluna. i e j

e do jeito que vc colocou primeiro ele vai ler todos os elementos de uma linha, ai pula para linha de baixo e lê todos até acabar de andar por toda matriz, mas a sua duvida ainda não sei qual é.

cara, eu pensei assim:

i = linha, j = coluna. Em ambos os for que você está fazendo, você teria que ler primeiro todos os valores da primeira linha. P. ex, a matriz 1 2 3 \n 4 5 6. No for, você teria que dizer: digite o numero da j coluna. Daí ia lá e colocava o 1, o for incrementa e vai pra segunda coluna, mas tudo isso na primeira linha. Depois, você faz a mesma coisa com a linha de baixo, só que o for do i já vai estar incrementado.

Acho que seu erro é só de lógica.

Edit;

Se você quiser falar pro usuário: Digite o número correspondente na linha i e na coluna j, você teria inserir primeramente na primeira linha, em todas as colunas, depois na segunda linha e em todas as colunas, e assim por diante. Se ele quiser alterar algum valor, você pergunta: “Qual a posição na matriz que deve ser alterada?”, e lê dois valores. Aí, você decrementa cada um deles (i-- e j–), porque ele vai colocar pensando que a primeira posição de cada é 1. Aí muda. Perae que já coloco algum código aqui.

Eu só estou querendo ler a matriz. A dúvida é essa.

Eu tenho que fazer dois for, do jeito que coloquei, certo?
O método(a maneira) de leitura é essa?
p[i][j]=ler.nextInt();

p= posição
i=a linha
j= a coluna.

p não é sua posição, mas sim o nome da sua matriz. As variáveis “i” e “j” é quem são as posições.

Segue o código com a saída:

[code]
import java.util.Scanner;

public class Matriz
{

public static void main(String[] args) {
    int[][] matriz = new int[5][5];
    Scanner leitor = new Scanner(System.in);
    
    for (int i = 0; i < 5; i++) {
        for (int j = 0; j < 5; j++) {
            System.out.print("Digite o elemento da linha " + (i + 1) + " da coluna " + (j + 1) + ": ");
            matriz[i][j] = leitor.nextInt();
            System.out.println("");
        }
    }
    
    System.out.println("Agora, apresentando a matriz\n\n");
    
    for (int i = 0; i < 5; i++) {
        for (int j = 0; j < 5; j++) {
            System.out.print(matriz[i][j] + "   ");
        }
        System.out.println("");
    }
    
    System.out.println("Fim");
    
    
}

}[/code]

Agora, a saída:

Desculpa ele ser tão grande. Eu deveria ter diminuído o número.
Abraço.

faz assim cara !!!



int[][] arraysInt = new int[4][];


for(int[] x : arraysInt){

	
for(int gu : x){

Sytem.out.println(gu);
		
}
}

Observação: eu não preenchi o array… Por favor note isso !

A partir do que vcs disseram, eu fiz assim

[code]for(int i=0; i<5; i++){
for(int j=0; j<5; j++){

        System.out.println("Qual o valor da linha " +(i+1) + 
        	 " da coluna " + (j+1) + "?");
         matriz[i][j]=ler.nextInt();
          

           }
        }[/code]

Dá Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at Matriz.main(Matriz.java :18 )

Podem dizer por que ele alcança uma posição que não existe?

Já assim dá certo:

[code]for(int i=0; i < matriz.length; i++){
for(int j=0; j < matriz.length; j++){

        System.out.println("Qual o valor da linha " +(i+1) +  " da coluna " + (j+1) + "?");
         matriz[i][j]=ler.nextInt();
          

           }
        }[/code]

>

Esse arraysInt do exemplo, eu não entendi.

Ele apresenta aquele erro porque o programa tenta acessar (com o for) uma posição da matriz que não existe. Por exemplo, qual o tamanho que você definiu? Provavelmente foi um valor menor que 4 e no for ele tenta acessar o quarto elemento (o último, ou o quinto, na visão do usuário).

O arraysInt que ele fez é o nome da matriz, que na verdade está correto. Uma matriz é um array bidirecional. O for que ele fez é chamado de for-each e é uma maneira de percorrer uma coleção sem saber a quantidade de elementos que o mesmo possui. Acho que se você está começando com programação em si (não só em Java), entenda primeiro como funciona o for “Normal”. Você atribui um valor inicial, faz um while e define o incremento… se você buscar na internet você acha algumas coisas melhores explicadas.

eu faria assim…

import java.util.Scanner;
public class Matriz {
public static void main(String[] args) {
int[][] matriz = new int[3][3];

	Scanner leitor = new Scanner(System.in); 
	
	for (int i = 0; i < matriz.length; i++){ 
		for (int j = 0; j < matriz[0].length; j++){ 
			System.out.print("Digite o elemento da linha " + (i + 1) + " da coluna " + (j + 1) + ": "); 
			matriz[i][j] = leitor.nextInt(); System.out.println(""); 
		} 
	}
	System.out.println("Agora, apresentando a matriz\n\n"); 
	for (int i = 0; i < matriz.length; i++) { 
		for (int j = 0; j < matriz[0].length; j++) {
			System.out.print(matriz[i][j] + " ");
		} 
		System.out.println(""); 
	}
}

seria interessante algo assim:

entre com a matriz: {{1,2,3},{4,5,6},{7,8,9}}

depois seria o caso de abrir essa string e analisar elemento a elemento, montando um array de acordo com o que vc quer.

Complicado?

entre com a matriz: 1,2,3 ; 4,5,6 ; 7,8,9

sinceramente não entendi o que você quis dizer…

xzcvzxcv

O que ele quis dizer é entrar com uma matriz, mas ler como uma String. Depois ir separando conforme os “;” vão aparecendo e inserindo nos arrays.