Retornar Main()? [RESOLVIDO]

Olá pessoal.
Preciso fazer com que depois que o programa “termine”, ele “reinicie”. (volte para a função main()).

O problema é que o Eclipse acusa: “The method main(String[]) in the type server is not applicable for the arguments ()”, quando tento

return(main());

Como prosseguir?

Agradeço desde já! :slight_smile:

[quote=Mijuaho]Olá pessoal.
Preciso fazer com que depois que o programa “termine”, ele “reinicie”. (volte para a função main()).

O problema é que o Eclipse acusa: “The method main(String[]) in the type server is not applicable for the arguments ()”, quando tento

return(main());

Como prosseguir?

Agradeço desde já! :)[/quote]

oi,

o método main é do tipo

ou seja, o tipo de retorno dele é void (não retorna nada) e ele recebe como parâmetro um array de strings

poste o código que você está fazendo para ter uma idéia melhor do que vc precisa…

abs

do{ }while(){ }

ou

while(){ }

vlw

[quote=André Fonseca][quote=Mijuaho]Olá pessoal.
Preciso fazer com que depois que o programa “termine”, ele “reinicie”. (volte para a função main()).

O problema é que o Eclipse acusa: “The method main(String[]) in the type server is not applicable for the arguments ()”, quando tento

return(main());

Como prosseguir?

Agradeço desde já! :)[/quote]

oi,

o método main é do tipo

ou seja, o tipo de retorno dele é void (não retorna nada) e ele recebe como parâmetro um array de strings

poste o código que você está fazendo para ter uma idéia melhor do que vc precisa…

abs[/quote]

Olá! :slight_smile:
Bem, estou criando um simples “servidor” que pega uma info. enviada pelo cliente e retorna algo.

Eu “filtro” no cliente, que ele só pode enviar algumas informações. (para não pesar o servidor de info. inúteis).
O problema é que mesmo “filtrando”, caso o cliente envie algo inútil, o servidor recebe a informação como “null”.

Para evitar o erro de NullException, coloquei:

if(receber_texto == null){ }

Mas isso faz com que, se está recebendo “null”, o programa “termina” (fecha), pois não há mais informações para mostrar.
Eu pensei em colocar no meio das chaves um “return”, reiniciando o programa. :slight_smile:

como posso reiniciar a aplicação, então, já que o main é void é não retorna nada?

Horas.

public static void main(String[] args){
//Faz um porrada de coisas.

main(args);//Ele se chama com os mesmos parametros
}

[quote=Mark_Ameba]Horas.

[code]
public static void main(String[] args){
//Faz um porrada de coisas.

main(args);//Ele se chama com os mesmos parametros
}
[/code][/quote]

Oxi, tão simples. :oops:
Valeu mesmo!!

Lembre-se que main também é um método.

A unica diferença é que com a assinatura certa a JVM sabe por onde começar o programa, mas voce ainda pode invocalo.

[quote=Mark_Ameba]Horas.

[code]
public static void main(String[] args){
//Faz um porrada de coisas.

main(args);//Ele se chama com os mesmos parametros
}
[/code][/quote]
Acho que isso gera um belo StackOverflowError…

Claro… algum momento tem que parar.

Só quis mostrar que era simples reiniciar o programa, quando parar ele decide.

Será que não é melhor vc fazer seu programa normalmente, como se ele não precisasse reiniciar, e depois usar esse programa como um serviço do sistema operacional? É assim com todos os bancos de dados, É assim com os servidores web… Pq não com o seu programa? Só não posso dizer como fazer isso, pq eu nunca tentei isso. Nada como o google pra garimpar, basta saber o que se quer achar :stuck_out_tongue:

Também tenho essa duvida de que na hora que parar de executar uma aplicação ela reinicie, mais como eu decido qual momento ela ira parar sem provocar um erro?

Consegui resolver

Meu aplicativo estava assim:

[code]import javax.swing.JOptionPane;

public class Produto {

public static void main(String[] args) {
        int x, y, z, result;

        String xVal, yVal, zVal;

        xVal = JOptionPane.showInputDialog(" Coloque o primeiro numero inteiro ≠ 0");
        
        yVal = JOptionPane.showInputDialog(" Coloque o segundo numero inteiro ≠ 0");
        
        zVal = JOptionPane.showInputDialog(" Coloque o terceiro numero inteiro ≠ 0");
        
        x = Integer.parseInt(xVal);
        y = Integer.parseInt(yVal);
        z = Integer.parseInt(zVal);

        result = x * y * z;

        JOptionPane.showMessageDialog(
                null, "O produto é " + result);

System.exit(0);

}

}[/code]

E ai resolvi deixando assim:

[code]import javax.swing.JOptionPane;

public class Produto {

public static void main(String[] args) {
    while (true) {
        int x, y, z, result;

        String xVal, yVal, zVal;

        xVal = JOptionPane.showInputDialog(" Coloque o primeiro numero inteiro ≠ 0");
        if (xVal == null) {
            break;
        }
        yVal = JOptionPane.showInputDialog(" Coloque o segundo numero inteiro ≠ 0");
        if (yVal == null) {
            break;
        }
        zVal = JOptionPane.showInputDialog(" Coloque o terceiro numero inteiro ≠ 0");
        if (zVal == null) {
            break;
        }
        x = Integer.parseInt(xVal);
        y = Integer.parseInt(yVal);
        z = Integer.parseInt(zVal);

        result = x * y * z;

        JOptionPane.showMessageDialog(
                null, "O produto é " + result);


    }

}

}[/code]

No caso, o aplicativo irá parar se o usuario der um cancelar quando pedir para inserir um numero.

[quote=raf4ever][quote=Mark_Ameba]Horas.

[code]
public static void main(String[] args){
//Faz um porrada de coisas.

main(args);//Ele se chama com os mesmos parametros
}
[/code][/quote]
Acho que isso gera um belo StackOverflowError…[/quote]
Não se houver um condicional para invocá-lo :wink: