【问题标题】:Running a Java Program having two Classes运行具有两个类的 Java 程序
【发布时间】:2015-01-29 05:06:36
【问题描述】:

我想知道如何通过纠正错误来执行这个java程序。

代码是:

import java.io.*;
class start
{
   public static void main(String args[])
   {
      System.out.println("STARTING JAVA PROGRAM");
   }
}
class finish
{
   System.out.println("FINISH");
}

执行此程序产生的错误是:

D:\Downloads\PRO>javac start.java

start.java:10: error: <identifier> expected
System.out.println("FINISH");
start.java:10: error: illegal start of type
System.out.println("FINISH");

我们可以在一个 java 程序中允许两个类吗?
谁能帮帮我。

【问题讨论】:

  • 我们可以在一个java程序中有两个类。但是在您的情况下,您已经在初始化块/方法/静态块/构造函数之外编写了 System.out.....,这在 java 中是不允许的
  • @PrakharAsthana:哦。我知道更新了帖子。
  • 也许您还想使用像 Eclipse 这样的开发环境。

标签: java inner-classes


【解决方案1】:

如果我理解您的问题,即您需要在一个文件中包含两个类,并且想要从包含 main 方法的类中调用另一个类的方法。
您可以编写如下所示的代码来调用其他类的方法。

class start
{
   public static void main(String args[])
   {
      System.out.println("STARTING JAVA PROGRAM");
      //finish.myMethod();
      finish f = new finish(); //this will call myMethod() from static block
   }
}
class finish
{  
    static
    {
       myMethod();
    }
    public static void myMethod()
    {
       System.out.println("FINISH");
    }
}  

输出:

STARTING JAVA PROGRAM
FINISH

【讨论】:

  • :谢谢。这确实是一个很好的答案,但我想看看我是否可以使用相同的代码从类完成而不是类开始运行该方法。你能说这是否可能。跨度>
  • 你的意思是说如果我有方法让我们在课堂开始时说A,而不是你想从课堂结束时调用方法A
  • :我不是那个意思。我宁愿 ie 方法的 A 定义和方法的 A 调用都在同一个类中完成。而且类开始应该有静态main 方法。我们可以这样写程序吗?
  • @justin 如果你把它放在同一个类中,你能调用那个方法吗?
  • :是的,没错。但是主方法如何调用方法A。我认为主方法也没有关于方法A的任何信息,而它调用方法A是不是吗?那为什么A方法所在的类不能调用A方法呢?
【解决方案2】:

您不能直接在类中编写 System.out.println(), 你需要一个可以调用的方法或构造函数,通过创建该类的对象然后调用相应的方法,

【讨论】:

    【解决方案3】:

    您不能在班级级别使用System.out.println()

    class finish{
     System.out.println("FINISH"); // you can't do this.
    }
    

    你可以在方法内部使用。

    class finish{
     public void myMethod(){
      System.out.println("FINISH"); // now this is inside a method.
     }
    }
    

    您也可以使用以下方式。放入 non-static initializersstatic block

    class finish{ 
     { // non-static initializers
      System.out.println("FINISH"); // now this is inside a block.
     }
    }
    

    您还可以在构造函数中使用更多 System.out.println()

    【讨论】:

    • 你能解释一下后一种(class with statement in block without method)的意思吗?什么时候执行?
    • @Thomas 它是一个带有non-static initializers 的Java 类。这将在每个构造函数之前执行,但在调用super() 之后
    • @Ruchira Gayan Ranaweera:但正如你所说,我已经将 System.out.println 语句放在了一个方法中,但它仍然没有显示“FINISH”。
    • @justin 将 System.out.println 放入方法中不会给您“完成”。您需要调用该方法。例如:public class Start { public static void main(String args[]) { System.out.println("STARTING JAVA PROGRAM"); Finish finish=new Finish(); finish.myMethod(); } } class Finish { public void myMethod(){ System.out.println("FINISH"); } }
    • @RuchiraGayanRanaweera:哦。我已经调用了该方法,但再次出现错误说:error: invalid method declaration; return type required。我添加到程序中的代码(更具体地说是在类完成中)是方法定义+方法() ;(函数调用)。我们应该为方法添加可见性修饰符还是有其他问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 2017-08-13
    相关资源
    最近更新 更多