Java 未检测到主方法

Java 未检测到主方法,java,class,main,Java,Class,Main,编译器一直说没有主方法,但有一个: import java.util.HashMap; import java.util.Map; import java.util.Scanner; class StarWarsFinal { final static Map<String, String> firstNameMap = new HashMap<>(); static { firstNameMap.put("A", "Cho"); fir

编译器一直说没有主方法,但有一个:

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
class StarWarsFinal

{
    final static Map<String, String> firstNameMap = new HashMap<>();
    static {
    firstNameMap.put("A", "Cho");
    firstNameMap.put("B", "R2");
    firstNameMap.put("C", "C-3po");
    firstNameMap.put("D", "Yod");
    firstNameMap.put("E", "Nas");
    firstNameMap.put("F", "Slea");
    firstNameMap.put("G", "Jan");
    firstNameMap.put("H", "Zhur");
    firstNameMap.put("I", "Boba");
    firstNameMap.put("J", "Thre");
    firstNameMap.put("K", "Bib");
    firstNameMap.put("L", "Kit");
    firstNameMap.put("M", "Kyp");
    firstNameMap.put("N", "Gonk");
    firstNameMap.put("O", "Zlung");
    firstNameMap.put("P", "Adi");
    firstNameMap.put("Q", "Nat");
    firstNameMap.put("R", "Ru");
    firstNameMap.put("S", "Cla");
    firstNameMap.put("T", "Kir");
    firstNameMap.put("U", "Obi");
    firstNameMap.put("V", "Ken");
    firstNameMap.put("W", "Ziro");
    firstNameMap.put("X", "Zev");
    firstNameMap.put("Y", "Tavion");
    firstNameMap.put("Z", "Jar");
    }


    final static Map<String, String> lastNameMap = new HashMap<>();
    static {
    lastNameMap.put("A", "tzki");
    lastNameMap.put("B", "hut");
    lastNameMap.put("C", "der");
    lastNameMap.put("D", "kzos");
    lastNameMap.put("E", "vos");
    lastNameMap.put("F", "vader");
    lastNameMap.put("G", "thrawn");
    lastNameMap.put("H", "mesk");
    lastNameMap.put("I", "thuo");
    lastNameMap.put("J", "skywalker");
    lastNameMap.put("K", "D2");
    lastNameMap.put("L", "maul");
    lastNameMap.put("M", "sith");
    lastNameMap.put("N", "muzzar");
    lastNameMap.put("O", "jusik");
    lastNameMap.put("P", "horn");
    lastNameMap.put("Q", "phisto");
    lastNameMap.put("R", "farlander");
    lastNameMap.put("S", "dunhaussan");
    lastNameMap.put("T", "jar");
    lastNameMap.put("U", "binks");
    lastNameMap.put("V", "lbis");
    lastNameMap.put("W", "gnarzlo");
    lastNameMap.put("X",  "anakin");
    lastNameMap.put("Y",  "ackbur");
    lastNameMap.put("Z", "axmis"); 
    }
    final static Map<String, String> jobMap = new HashMap<>();
    static{

    jobMap.put("Jan","Clone");
    jobMap.put("Feb","Bounty Hunter");
    jobMap.put("Mar","Droid");
    jobMap.put("Apr","Jedi Knight");
    jobMap.put("May","Gungan");
    jobMap.put("Jun","Gangster");
    jobMap.put("Jul","commander");
    jobMap.put("Aug","ewok");
    jobMap.put("Sep","Queen");
    jobMap.put("Oct","Empirer");
    jobMap.put("Nov","Darth");
    jobMap.put("Dec","captain");


    }

  public static void main ( String[] args )
  {
      String[] planet = null, rank = null, rebbelion = null, letter1 = null, letter2= null , Map , HashMap;


     Scanner input = new Scanner( System.in ); //scanner initilized


    planet = new String[11]; //Planet options  

    planet[0] = "Alderaan";
    planet[1] = "Bespin";
    planet[2] = "Coruscant";
    planet[3]= "Forest moon of Endor";
    planet[4] = "Hoth";
    planet[5] = "Kamino";
    planet[6] = "Kashyyk";
    planet[7] = "Mustafar";
    planet[8] = "Yavin";
    planet[9] = "DEATH STAR";//Planet options  -END




        System.out.println("Welcome to the Star Wars name generator");
        System.out.println("What is your first name?");     //Name Generation
        String firstName = input.nextLine();
        String newFirst = firstNameMap.get(firstName.toUpperCase().substring(0,1));         //Name Generation (i want to take the first letter of there input and get the output from letter1 matching that # ie c = letter1 [2]  a= letter1 [0])
        System.out.println("What is your last name?");      //Name Generation
        String lastName = input.nextLine(); //Name Generation (i want to take the first letter of there input and get the output from letter2 matching that # ie c = letter2 [2]  a= letter2 [0])
        String newLast = lastNameMap.get (lastName.toUpperCase().substring(0,1));
        System.out.println("What is your Birth month(first 3 letters)?");     //Name Generation
        String month = input.nextLine();
        String job = jobMap.get(firstName.toUpperCase().substring(0,3));


    System.out.println("If you had to choose 1)dark or 2)light side? please input the number"); //Selection of Dark or Light side
    int side = input.nextInt();
                                       //Selection of Dark or Light side

      System.out.println("There are now several places you could live please choose one of the following by number:");    //Planet selections
                System.out.println("1) Alderaan 2) Bespin 3) Coruscant 4) Forest moon of Endor 5) Hoth ");                          //Planet selections
                System.out.println("6) Kamino 7) Kashyyk 8) Mustafar 9) Yavin 10)DEATHSTAR");                                       //Planet selections
                String location =input.nextLine();


        if (side == 1)
        {
            System.out.println("You Have chosen to be part of the dark side!");

                System.out.println("You "+ newFirst + newLast +" now fight for the dark side  As a proud "+ job +"of the"+ location +"Good luck against your enemy's and may the force be with you");
        }


        else
        {
            System.out.println("You are now part of the light side!");

            System.out.println("You "+ newFirst + newLast +" now fight for the light side  As a proud "+ job +"of the"+ location +"Good luck against your enemy's and may the force be with you");
        } 



        System.out.println("Thank you for doing the starwars name generator!");
  }
}

我不知道为什么它不读它,因为它早些时候起作用了。我正在使用NetBeans作为IDE。

该程序没有问题

我做了以下工作:

[steve@newbox tmp]$ cat > StarWarsFinal.java
<paste-program-from-question>
[steve@newbox tmp]$ javac StarWarsFinal.java 
[steve@newbox tmp]$ java StarWarsFinal 
Welcome to the Star Wars name generator
What is your first name?
^D
Exception in thread "main" java.util.NoSuchElementException: No line found
    at java.util.Scanner.nextLine(Scanner.java:1585)
    at StarWarsFinal.main(StarWarsFinal.java:112)
[steve@newbox tmp]$ 
由此,我们必须得出结论,您遇到的问题如下:

[steve@newbox tmp]$ cat > StarWarsFinal.java
<paste-program-from-question>
[steve@newbox tmp]$ javac StarWarsFinal.java 
[steve@newbox tmp]$ java StarWarsFinal 
Welcome to the Star Wars name generator
What is your first name?
^D
Exception in thread "main" java.util.NoSuchElementException: No line found
    at java.util.Scanner.nextLine(Scanner.java:1585)
    at StarWarsFinal.main(StarWarsFinal.java:112)
[steve@newbox tmp]$ 
您没有正确编译它。 您没有正确运行它。 NetBeans决定类是可运行的,这是一种非标准的方式。这是极不可能的。。。依我所见 也许你正在做一些你没有提到的事情。。。 记录在案:

至少当您使用java命令从命令行运行该类时,该类不必声明为public,就可以运行

没有主方法不是Java编译错误。这是一个运行时错误。如果要尝试运行一个类,它只需要一个main方法。编译器无法知道您是否要这样做,因此它不能对此抱怨

该页面将引导您完成使用NetBeans编译和运行简单程序的步骤。也许这会给你一些关于你做错了什么的线索


@Subbrajyotimajumder类不必公开。@MarkoTopolnik是的,我刚刚测试了它,因为我不相信你!因此,必须是错误的包移动到默认值,尽管NetBeans应该向您报告并提供重构。除此之外,我看不出有什么错。@haywire怀疑论是我们工作领域的一个积极特征:如果我在IntelliJ中运行代码,它就会工作。您编译和调用应用程序的方式可能有问题。使用javac StarWarsFinal.java编译它和java-cp。StarwarsFinal如果您当前在类文件所在的目录中,则可以运行它。您至少可以像我一样运行它。他不是。那么这有多大帮助呢?@haywire-它向他展示了一种编译和运行程序的简单方法,该程序实际上可以运行。它还提供了一些线索,说明为什么它不适合他。那怎么帮不了他???是的,我明白了!但他仍然无法通过Netbeans编译和运行这个程序,我认为这是他的目标。@haywire-除非他详细解释他是如何试图使用我们假设的Netbeans编译和运行它的,否则我们无法帮助他找出他做错了什么。