Java

Por que não consigo imprimir com o while o valor que digito nas matrizes?

package lacos;

import java.util.Scanner;

public class TestandoWhile {

    public static void main(String[] args) {

        int[][] matriz = new int[2][2];
        Scanner as = new Scanner(System.in);
        int i= 0;
        int j = 0;
        while ( i < matriz.length) {
            j=0;
        while ( j<matriz.length){
  
            System.out.println("digite os númers da posição da matriz:" + "[" + i + "," + j+ "]");
            matriz[i][j] = as.nextInt();
            j++;
        }
         i++; 
        
        }
      
    
         System.out.print(" matrizes:" + " [" );
  while (i < matriz.length){
  while  ( j < matriz.length){
      
     System.out.print(matriz[i][j]);
   j++;
  } 
 
  i++;
  }
        System.out.print("]");  
        System.out.println(" ");  
  }
}

Quando vais imprimir o teu i e j já estão como valor do tamanho da matriz, não voltaste a iniciar o seu valor em 0

Mas estou usando a classe Scanner pra definir os valores, e como ficaria essa saída?

Não me expliquei bem. Não são os valores que introduzes que tens de definir, são os auxiliares para percorrer toda a matriz.

O que queres fazer aqui?

Percorrer a matriz com i de 0 até ao tamanho da matriz. Mas i não é zero aqui. i tem o valor que o último i++ lhe atribuiu (que será igual ao tamanho da matriz). Logo, nunca vai entrar neste while.

Quero imprimir os valores que eu digitar no primeiro while.

A primeira parte do código tá certa por que eu consigo imprimir a matriz com o laço for. O que não tô conseguindo é imprimir a matriz que digito com o mesmo laço while entende?

    System.out.print(" matrizes:" + " [");
    i = 0;  // Falta esta atribuição novamente a zero
    while (i < matriz.length) {
        j = 0; // Falta esta atribuição novamente a zero
        while (j < matriz.length) {

Deu certo, obrigado.