如何从课堂内调用main

时间:2011-09-14 03:33:58

标签: java main

我是Java的新手,我确信有一种方法可以做到这一点,所以我要问:你可以从班级调用main方法吗?

 import java.io.*;
public class Chemicalcommandline {
public void start()  {
    String instructions = "This program "
            + ""
            + ""
            + ""
            + "";
    System.out.println();
     System.out.println("Chemical Sign: ");

    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    String chemical = null;
    try {
        chemical = reader.readLine();
    }   catch(IOException ioe)  {
        System.out.println("Error");
    }
   //start very long if
if (chemical.equals("Ca")) {
    System.out.println("Calcium");

}
main();
}
public static void main(String[] args)  {
  Chemicalcommandline client = new Chemicalcommandline();
  client.start();
}
}  

我如何调用main以便在获得一个输入后代码不会退出?

4 个答案:

答案 0 :(得分:6)

我注意到你试图重复执行main方法中的内容。

您可以重复调用某些内容,而不是调用main方法,这被视为一个糟糕的设计决策。

如果您想重复做一些事情,可以使用以下表格:

public static void main(String[] args) {
    boolean endCondition = false;

    while(!endCondition) {
        Chemicalcommndline.start();
        endCondition = shouldEndCheck();
    }
}

如果您应该停止循环,shouldEndCheck方法返回true。

如果您想检查有效输入,可以使用以下表格:

public static void main(String[] args) {

    String input = "";
    do {
        input = readInput();
    } while (!validInput(input));

    processInput(input);
}

readInput返回用户提供的String(可能更简单), validInput是一个布尔方法,如果您认为输入有效,则返回true, 并且processInput是您选择使用有效输入的内容。

我希望这会有所帮助。

答案 1 :(得分:1)

不,你不能以这种方式调用main。在输入读数中使用具有某种形式的终端条件的while循环。

答案 2 :(得分:1)

你为什么要打电话给主?从你的开始方法? !这将以无限递归调用结束。 Main将调用start和start将调用main 虽然如果你坚持这样做,你可以做到以下几点。 了解start方法签名如何更改以及如何将null传递给main。 在你的情况下,这个程序将永远不会结束,除非你在输入“q”或其他东西时编写特殊处理代码来执行“system.exit”。

import java.io.*;
public class Chemicalcommandline {
public static void start()  {
    String instructions = "This program "
            + ""
            + ""
            + ""
            + "";
    System.out.println();
     System.out.println("Chemical Sign: ");

    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    String chemical = null;
    try {
        chemical = reader.readLine();
    }   catch(IOException ioe)  {
        System.out.println("Error");
    }
   //start crazy long if
if (chemical.equals("Ca")) {
    System.out.println("Calcium");

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

  Chemicalcommandline.start();
}
}  

建议的

import java.io.*;
public class Chemicalcommandline {
public static void start()  {
    String instructions = "This program "
            + ""
            + ""
            + ""
            + "";
    System.out.println(instructions);
     System.out.println("Chemical Sign: ");

    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    String chemical = null;
    try {
        chemical = reader.readLine();
        if(chemical.equals("exit")){
            System.exit(0);
        }
    }   catch(IOException ioe)  {
        System.out.println("Error");
    }
   //start crazy long if
if (chemical.equals("Ca")) {
    System.out.println("Calcium");

}
main(null);
}
public static void main(String[] args)  {
  //Chemicalcommandline client = new Chemicalcommandline();
  Chemicalcommandline.start();
}
}  

答案 3 :(得分:0)

这是另一个展示几个良好的类设计实践的例子

类构造函数

使用main方法实例化类

使用布尔条件循环,以及关于如何结束循环的语句

import java.io.*;
public class Chemicalcommandline {

//class constructor
public Chemicalcommandline(){
    start();
}

public static void start()  {

    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    String chemical = null;
    Boolean done = false;

       while(!done){
        String instructions = "This program "
                + ""
                + ""
                + ""
                + "";
        System.out.println(instructions);
        System.out.println("Chemical Sign: , enter exit to end");

        try {
            chemical = reader.readLine();
            if(chemical.equals("exit")){
                done = true;
            }
        }catch(IOException ioe)  {
            System.out.println("Error");
        }

        if (chemical.equals("Ca")) {
             System.out.println("Calcium");
        }else{
             System.out.println("not sure what that is...");
        }

       }// end while
    }//end method start

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

 }//end class Chemicalcommandline