Duvida muito basica VOID

Bem eu tenho uma duvida secalhar ate um pouco estupida mas como sou iniciante espero que me “perdoem” por vos estar a fazer este tipo de questoes. Ora a questao é eu tenho uma classe, nessa classe obrigatoriamente tenho que ter um metodo main, agora a questão é o main é sempre Void certo ? ou seja nao retorna nada. Eu queria realizar a impressao de uma matriz logo tinha que a retornar para concluir a sua leitura por isso, este mesmo codigo nao pode estar dentro do main logo tenho que criar outro metodo que nao seja Void. O que agora acontece é que o programa nao me deixa compilar poque eu nao tenho nada no metodo main. ora vejam o codigo:


public class experiencia {

	public static void main(String[] args) {	
		
	}

int [][] imprimematriz(int[][] matriz){

	int vetorexp [][] = new int [5][5];
		for(int i = 0; i < 5; i++){
		for(int j = 0; j < 5; j++){
			if(i==j)
				vetorexp[i][j]=2;
			else
				vetorexp[i][j]=5;
		System.out.println(" "+vetorexp[i][j]);
		}
		
}
		return vetorexp;
		
}
}

Na verdade, como você só quer imprimir o vetor no console, o método não precisa retornar nada, pois vc ja ta imprimindo dentro do método imprimeMatriz.
como o método não é statico, você precisa instanciar a classe Experiencia pra poder executar. Ficaria ± assim

public class experiencia {  
  
    public static void main(String[] args) {      
          Experiencia experiencia = new Experiencia();
          // Cria a matriz
          experiencia.imprimematriz(matriz)
    }  
  
public void imprimematriz(int[][] matriz){  
  
    int vetorexp [][] = new int [5][5];  
        for(int i = 0; i < 5; i++){  
        for(int j = 0; j < 5; j++){  
            if(i==j)  
                vetorexp[i][j]=2;  
            else  
                vetorexp[i][j]=5;  
        System.out.println(" "+vetorexp[i][j]);  
        }  
          
}  
       
          
}  
}

Só lembrando que vc deve se atentar as nomeclaturas. Nome de classe por exemplo, sempre começa com maiuculo

alias, olhando aqui o código, vc nem usa a variavel matriz q é passada como parametro, ta todo doido esse método aí…

tem toda a razao, contudo eu tentei compilar o codigo e esta me a dar um erro.

public class experiencia {

	public static void main(String[] args) {	
		experiencia experiencia = new experiencia();  
        // Cria a matriz  
        experiencia.imprimematriz(matriz) 
	}

int [][] imprimematriz(int[][] matriz){

	 
		for(int i = 0; i < 5; i++){
		for(int j = 0; j < 5; j++){
			if(i==j)
				matriz[i][j]=2;
			else
				matriz[i][j]=5;
		System.out.println(" "+matriz[i][j]);
		}
		
}
		return matriz;
		
}
}

esta me a dar erro neste passo :

experiencia.imprimematriz(matriz)

Claro colega, em todo programa que há um main ele sempre será assim: public static void main(String[] args)
qualificador de acesso é public
será um método estático (static)
não retornará nada void

para que a impressão da matriz seja feita você deve chamar dentro do main o método estático que você criou (imprimematriz(null):wink: e os comando dentro do if e else para serem impresso na tela.

[code]public class matriz {

    public static void main(String[] args) {      
          imprimematriz(null);
    }  
  
static int [][] imprimematriz(int[][] matriz){  
  
    int vetorexp [][] = new int [5][5];  
    
        for(int i = 0; i &lt; 5; i++){
        	for(int j = 0; j &lt; 5; j++){
				if(i==j)  {
					System.out.print(i);
					System.out.println(j);
				}
				else{ 
					System.out.print(i);
					System.out.println(j);
				}

        	}
        }  
        return vetorexp;  
          
}  [/code]

Se ajudei blz, se não paciência.
falo fii.

Bom só acrescentando ao que marcos4ft falou, você realmente não vai necessitar retornar nada porque está somente imprimindo os valores da matriz, e há também uma outra coisa que se deve levar em consideração neste caso, você está criando uma nova matriz dentro do metodo e não imprimindo a que foi passada por referencia, no caso acho que o mais correto seria fazer assim.

/*
* Este aqui é um metodo padrão do java o principal e o primeiro que será chamado na hora da execução
* ele deve ser sempre da mesma forma
*/
public static void main(String[] args){
  // aqui você cria uma nova matriz
  int[][] matriz = new int[5][5];
  // E depois atribui valores a ela
  for (int i = 0; i<5; i++){
    for(int j=0; j<5; j++){
      if(i == j){
        matriz[i][j] = 2;
      }else{
        matriz[i][j] = 5;
      }
    }
  }
  // E quando quiser imprimir a matriz seja ela de qualquer tamanho
  // só é chamar o metodo imprimiMatriz
  // Obs.: para ser utilizado desta forma ele deve ser um metodo static caso
  // contrario será necessário criar uma nova instancia da classe que possui este metodo
  imprimirMatriz(matriz);
}

/*
* Este metodo irá imprimir matrizes independentes do tamanho
* Desde que sejam do tipo int
*/
public static void imprimirMatriz(int[][] matriz){
  for (int i = 0; i<5; i++){
    for(int j=0; j<5; j++){
      // Percorre todas as posições da matriz e imprime seus valores
      System.out.print(matriz[i][j] + " ");
    }
  }
}

Demorei de mais escrevendo este meu primeiro poste faz referência ao primeiro de marcos4ft.

ñ há necessidade de instanciar um objeto no main, basta passar o metodo imprimematriz para estatico e colocar dentro do main
que ela executara numa boa sem problemas.

retirei a matriz parametro do codigo pois ñ faz sentido algum ter um parametro ñ utilizado.

public class experiencia {

	public static void main(String[] args) {
			imprimematriz();
	}

	public static void imprimematriz() {

		int vetorexp[][] = new int[5][5];
		for (int i = 0; i < 5; i++) {
			for (int j = 0; j < 5; j++) {
				if (i == j)
					vetorexp[i][j] = 2;
				else
					vetorexp[i][j] = 5;
				System.out.println(" " + vetorexp[i][j]);
			}

		}

	}
}

com certeza, só usei o exemplo instanciando pra seguir a classe que ele tinha feito.