是否可以在没有公共静态void mainString [] args的情况下编写Java代码?

如何解决是否可以在没有公共静态void mainString [] args的情况下编写Java代码?

我正在为一个非常基础/初学者的Java考试进行学习,并且在查看一些示例代码时,我注意到有一对不包含该方法的夫妇:public static void main(String [] args)

这怎么可能?有什么我想念的吗?

我的教授未使用该方法上传的示例代码示例:

public class Student {

  int midtermExam;
  int finalExam;
 
  double calcAvg() {
    double returnValue;
    returnValue = (midtermExam + finalExam) / 2.0;
    return returnValue;
  }

  char getLetterGrade() {

    char grade;
    double avg = (midtermExam + finalExam) / 2.0;
    // double avg = calcAvg();
    
    if (avg >= 90)
      grade = 'A';
    else
    if (avg >= 80)
      grade = 'B';
    else
    if (avg >= 70)
      grade = 'C';
    else
      grade = 'F';

    return grade;
  }

}

解决方法

在某处总是必须有一个main()方法。它并不总是在您自己的代码中。如果您使用的是Java框架,则main()可能在框架代码中,而不是您自己的代码中。您的代码中也可以有多个main()方法,但是只有一种方法可以用作特定运行的程序入口点。每次您运行Java程序时,您实际上都在运行一种main()方法来启动该程序。

,

公共静态void main(String [] args)方法是标准Java应用程序的入口点。如果要从命令行运行它,则至少需要一个使用此方法的类。在某些特殊情况下,如果JAR是将以某种方式添加到将使用它的另一个应用程序中的库或包,则可以在不具有此类入口点的情况下构建JAR。但是,您现在不想赘述。

您看到的示例可能就是这样。例子。而且它们缺少切入点,因为它们不是完整的应用程序。您的教授上传的代码只是一个班级。无法执行。这只是显示课程的一种方式。

,

如果您使用的是Java 9+,则主要方法是JShell。

这是一个交互式工具,可让您使用终端/ cmd评估代码。 也称为读取-评估-打印循环(REPL),在输入声明,语句和表达式时对其进行评估,并立即显示结果。

在官方文档https://docs.oracle.com/javase/9/jshell/introduction-jshell.htm

中有很好的解释

当我想测试或探索Java新功能时,我发现它很有用。

,

试图涵盖基本概念:

1)JAVA程序包含任意数量的类,但是最多可以将一个类声明为public。

2)如果存在公共类,则程序名称和公共类名称必须匹配,否则会出现编译时错误。

3)Main()方法与JAVA文件的名称没有关系。

编写没有main()方法的类时。它将编译正常。

但是当您运行代码时,它将给出错误: NoSuchMethodError:主要

示例:

Test.java

class A(){
    public static void main(String args[]){
    System.out.println("In class Main : A");
    }
}
class B(){
    public static void main(String args[]){
    System.out.println("In class Main : B");
    }
}
class C(){
    public static void main(String args[]){
    System.out.println("In class Main : C");
    }
class D(){
    }   

--------------------------------
Javac Test.java 
--> No Compile Time Error you will get

Java A
o/p : In class Main A

Java B
o/p : In class Main B

Java C
o/p : In class Main C

Java D
o/p : NoSuchMethodError : main

Java Test
o/p : NoClassdefFoundError : Test

--> Run Time error you will get.

创建JAR文件或任何内置软件包时。不需要main()方法,因为您导入了包或.Jar文件,并在工作类中调用了这些method()。

当您运行应用程序并想要自动获取输出时。 public static void main(String[] args)方法是签名,编译器在其中找到程序的入口点。

您的教授上传的代码只是一个班级。它将编译正常。 从上面的代码中,您可以在同一文件中有许多main()方法。但是您必须运行特定的类。

尝试运行Student类:您将得到一个错误:Student类中找不到主要方法,请将该主要方法定义为:
公共静态void main(String [] args)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?