Ajuda

9 respostas
T

Alguém sabe o que quer dizer essa exceção?
Exception in thread “main” java.lang.NoSuchMethodError: main

Foi o que apareceu quando submeti meu problema em um site.

9 Respostas

T

A declaração correta do método main é:

public static void main(String[] args) {

Para lembrar que é "public static void main (String[] args)" você pode inventar uma decoreba qualquer com as primeiras letras - "psvmsa" -> "Pedro Sales e Virginia Maria se amam" ou coisa parecida.

rmendes08

Isso quer dizer que a JVM tentou executar o método main da sua classe, mas que não o encontrou. Verifique a assinatura do método:

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

http://www.guj.com.br/posts/list/63.java

Abraços!!!

T

Mas se eu coloco “public static void main (String[] args)” o netbeans sublinha todo o corpo do meu método main de vermelho e dá o seguinte recado: non-static variable N cannot be referenced from a static context.
Foi por isso que eu tirei o static.

Giulliano

é pq sua variável N não é estática !!!

T

Usualmente você faz algo parecido com o seguinte:

classe Teste {
    int x;
    int y;
    public Teste() {
        x = 2; y = 3;
    }
    public void processar() {
        System.out.println ("x = " + x + ", y = " + y);
    }
    public static void main(String[] args) {
        Teste t = new Teste();
        t.processar();
    }
}

onde você instancia um objeto do tipo da sua classe, no método “main”, e então chama um dos métodos.

T

Aham, não fique usando variáveis estáticas a torto e a direito só para corrigir erros de compilação. O indicado é instanciar um objeto da sua classe, como expliquei acima.

T

E como que eu faço pra ela ser estática??

Esse é o iniciozinho do problema:

import java.util.Scanner;

class Main {
Scanner entrada = new Scanner (System.in);
int N = entrada.nextInt();
int M = entrada.nextInt();
int [][] mapa = new int [N][M];
int [] soma_linha = new int [N];
int [] soma_coluna = new int [M];



public static void main(String[] args) {
    
    if (1 <= N && N <= 100 && 1 <= M && M <= 100){
        for (int i = 0; i<N; i++){
            for (int j = 0; j<M; j++){
                mapa[i][j] = entrada.nextInt();
            }
        }
T

Consegui!!!

Agora só falta encaixar a saída com o println…
Alguém pode me ajudar?

Criado 5 de dezembro de 2008
Ultima resposta 5 de dez. de 2008
Respostas 9
Participantes 5