【问题标题】:How to fix the following error: "Error: Main method not found in class"如何修复以下错误:“错误:在类中找不到主要方法”
【发布时间】:2014-12-05 02:21:00
【问题描述】:

我基本上是 Java 新手,为了好玩,我正在创建一个股票市场模拟器/游戏。我知道我的代码并不“完美”,但请记住我是新手,我有 1 个错误。

"错误:在 StockPackage.Dog 类中找不到主要方法,请定义 主要方法为:public static void main(String[] args)"

我查看了所有可以找到的参数和参数教程,并搜索了 StackOverflow 的问题,但找不到解决方案。

如果可以,有人可以想出一种“删除/修复”错误的方法,或者尽可能地帮助我。提前致谢!

我的代码:

package StockPackage;

import java.util.Scanner;    

public class Dog {      

    public static void main(String[] args, int CurMoney, String[] inputStocks, 
        int[] StockMoney) {
        Dog Run = new Dog();
        Run.MainScript();
        Run.OptionStartingMethod(inputStocks, CurMoney, StockMoney);
    }     

//==============================================================================
//                          ||Objects||
    void options(String[] inputStocks, int CurMoney, int[] StockMoney) {
        String optionEXIT, optionStartStock, optionBuyStock, optionSellStock;
        String optionCheat, optionInfo, optionCredits, optionClose, OptionInput;
        int i, j, k;            

        Scanner optionInput = new Scanner(System.in);

        Dog FlixSibling = new Dog();            

        System.out.println("=============| Options | =============");
        System.out.println(" optionEXIT       " + " optionStartStock   " + "optionBuyStock");
        System.out.println(" optionSellStock  " + " optionCheat   " + "     OptionInfo  ");
        System.out.println(" optionCredits    " + " optionClose   " + "        optionCheckCash");
        System.out.println();
        System.out.print("==|  ");

        OptionInput = optionInput.nextLine();

        if(OptionInput.equals("optionEXIT")) {
            FlixSibling.Close();
        } else if(OptionInput.equals("optionStartStock")) {

            StartStock(inputStocks, StockMoney, CurMoney);
        } else if(OptionInput.equals("optionBuyStock")) {

        } else if(OptionInput.equals("optionSellStock")) {

        } else if(OptionInput.equals("optionCheat")) {

        } else if(OptionInput.equals("optionInfo")) {

        } else if(OptionInput.equals("optionCredits")) {

        } else if(OptionInput.equals("optionClose")) {
            optionClose1(inputStocks, CurMoney, StockMoney);
        }

    }
//==============================================================================
//                        ||Option Holders||
    void optionClose1(String[] inputStocks, int CurMoney, int[] StockMoney) {
        int i, j, k;
        for(i = 0; i <= 25; i++) {
            System.out.println();
        }
        MainScript();
        for(i = 0; i <= 3; i++) {
            System.out.println();
        }
    }
    void OptionStartingMethod(String[] inputStocks, int CurMoney, int[] StockMoney) {
        Scanner InputBoard1 = new Scanner(System.in);

        String Options;
        System.out.println();
        System.out.println("Option: Press 'P'");

        Options = InputBoard1.nextLine();

        if(Options.equals("P")) {
            options(inputStocks, CurMoney, StockMoney);
        }
    }
//==============================================================================
//                      ||StartStock Method||
    void StartStock(String[] inputStocks, int[] StockMoney, int CurMoney) {
        Dog StartStocking = new Dog();

        String Answer;
        String name, price;
        int CurCash;

        Scanner StartingStockInput = new Scanner(System.in);

        System.out.println();
        System.out.println("Do you Wish to create a Stock? (y/n)");
        Answer = StartingStockInput.nextLine();

        if(Answer.equals("y")) {
            System.out.println("$15000 Has been taken out of your Account");
            CurMoney -= 15000;    // for Creating the Stock

            System.out.println("Name|  ");
            name = StartingStockInput.nextLine();

            System.out.println("input Amount of Cash|  ");
            CurCash = StartingStockInput.nextInt();
            if(CurCash > CurMoney) {
                CurCash = CurMoney;
            }
            MainScript();


        } else if(Answer.equals("n")) {
            optionClose1(inputStocks, CurMoney, StockMoney);
        }

    }


//==============================================================================
//                        ||Close Method||
    void Close() {
        System.out.println();
        System.out.println();
        System.out.println("You Exit'ed out of Stock market SIM");
    }

//==============================================================================
//                        ||Main Method||
    void MainScript() {

        System.out.println("Welcome to the Stock Market");

                //        ||Variables||
        int StockPercent;
        int CurMoney;
        String Options;
        CurMoney = 64000;
        String Place, Place1, Place2;
        Place = "0";
        Place1 = ",000";
        Place2 = ",000,000";
        String nothing = "|Under Construction|";
        int i, j, k;

        Dog Flix = new Dog();

        boolean Construction = false;

        int[] StockMoney;
        StockMoney = new int[500];

        String[] inputStocks;
        inputStocks = new String[200]; // Used for storing the inputed Stocks
                                       // 50 And Above are used for Creating Stocks
        String per = "%";

        inputStocks[0] = "Google"; 
        StockMoney[50] = 0; 
        StockMoney[0] = 400000000;     // Using the 2 bit 000's for the millions place;

        inputStocks[2] = "MicroSoft";
        StockMoney[51] = 0;
        StockMoney[1] = 250000000;

        inputStocks[4] = "Yahoo";
        StockMoney[52] = 0;
        StockMoney[2] = 100000000;

        inputStocks[6] = "Cheeez It's";
        StockMoney[53] = 0; 
        StockMoney[3] = 50000;




                //         ||input From User||
        Scanner InputBoard = new Scanner(System.in);



                //         ||Output From Program||

        System.out.println("[]---------------| Stocks |---------------[]");
        System.out.println(inputStocks[0] + "      " + StockMoney[0] + "    " + StockMoney[50] + per);
        System.out.println(inputStocks[2] + "   " + StockMoney[1] + "    " + StockMoney[51] + per);
        System.out.println(inputStocks[4] + "       " + StockMoney[2] + "    " + StockMoney[52] + per);
        System.out.println(inputStocks[6] + " " + StockMoney[3] + "        " + StockMoney[53] + per);
        System.out.println();
        System.out.println();



        if(Construction) {
            System.out.println(nothing);
            System.out.println(nothing);
            System.out.println(nothing);
            System.out.println(nothing);
            System.out.println(nothing);
            System.out.println(nothing);
            System.out.println(nothing);
            System.out.println(nothing);
        }
    }


}

【问题讨论】:

  • 另外顺便说一句,我正在构建一些代码,例如“选项方法”中的“else if”语句不要介意XD,如果你可以列出一些Java教程网站您的最爱,再次感谢!

标签: java parameters arguments


【解决方案1】:

您的 main 方法与通常启动 Java 应用程序的标准 main 方法的签名不匹配。你的参数太多了,应该只有一个参数,一个字符串数组。

所以你必须改变这个:

// incorrect main method signature
public static void main(String[] args, int CurMoney, String[] inputStocks, int[] StockMoney) {

到这里:

// correct main method signature
public static void main(String[] args) {

并以某种方式获取所有需要的信息,也许是从一个文件中?

【讨论】:

  • “可能来自文件” 通常初学者使用args[0]args[1]等获取数据作为命令行参数。读取文件或从其他方法获取信息是更高级的主题。
  • 谢谢!就是这样!
【解决方案2】:

JVM只知道main方法的如下格式,

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

main 关键字是保留的,因此您不能将其用于任何其他目的,例如多个参数等。

【讨论】:

    【解决方案3】:

    你不能改变 public static void main 方法,所以你必须以正确的方式放置

        public static void main(String[] args) {
    
            int CurMoney;//fill the varible
            String[] inputStocks;//fill the Array
            int[] StockMoney;//fill the Array
            Dog Run = new Dog();
            Run.MainScript();
            Run.OptionStartingMethod(inputStocks, CurMoney, StockMoney);
        }
    
    rest of the code you have...   
    

    【讨论】:

    • 我认为您不需要重复问题中未更改的代码。但是你的答案比其他人更完整。我建议您通过命令行指导初学者使用字符串数组(args)填充变量。以及提供一些关于其他方法的提示和指示。
    • 我只是需要帮助,因为这个网站对我帮助很大,感谢您的建议!
    • 我知道,感谢您的贡献。我只是认为没有必要重复问题中已经存在的内容。尤其是这么长的代码。您只需要展示您所做的更改。
    猜你喜欢
    • 2016-08-22
    • 2015-04-20
    • 2013-06-25
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多