当前位置: 首页 > 知识库问答 >
问题:

Java:为什么我不能在main之外调用这个方法?[闭门]

白萧迟
2023-03-14

作为一个初学者,我想知道为什么我的来电者。VelocityC仅在放在主块内时有效?

当我有这样的代码时,我不能调用该方法。

方法调用类:

public class Velocity2 {

VelocityCounter caller = new VelocityCounter();
caller.VelocityC(6, 3);
}

包含以下方法的类:

public class VelocityCounter {  
void VelocityC(int s, int v){
    System.out.print(s/v);
  }
}

共有3个答案

袁弘化
2023-03-14

在源文件的这个区域,您可以声明类的字段或实例的字段,但前提是您仍然真的想调用调用者。VelocityC(6,3) 然后可以使用如下所示的实例初始化块:

public class Velocity2 {

    VelocityCounter caller = new VelocityCounter();
    {
        caller.VelocityC(6, 3);
    }
}

调用者。VelocityC(6,3);将在Velocity2的每个构造过程中执行,就像执行Velocity计数器构造和分配给调用者一样。

http://docs.oracle.com/javase/tutorial/java/javaOO/initial.html

魏雅惠
2023-03-14

这是因为方法或构造函数之外的代码只是声明性的。不能将赋值或方法调用之类的语句置于方法或构造函数之外。

秦俊友
2023-03-14

在Java中,不能有不属于方法的可执行语句*第一行没问题:

VelocityCounter caller = new VelocityCounter();

因为编译器认为您正在为类Velocity2声明并初始化名为caller的实例变量。然而,第二行:

caller.VelocityC(6, 3);

在类声明的最高级别是非法的。

*从技术上来说,这不太对。语句也可以出现在构造函数、静态块和实例初始化器块中。

 类似资料:
  • 在这个解决方案中,我可以调用void中的变量。当我试图在void之外调用它时,数据是空的。 但我只想知道,为什么我的代码一开始就不能工作?谢谢。

  • 我知道string1将包含一个空字符串。我的问题是为什么像下面这样两次调用nextLine方法会出现错误:

  • 这是另一个非常经典的 java 多线程面试问题,而且在面试中会经常被问到。很简单,但是很多人都会答不上来! new 一个 Thread,线程进入了新建状态。调用 start() 方法,会启动一个线程并使线程进入了就绪状态,当分配到时间片后就可以开始运行了。 start() 会执行线程的相应准备工作,然后自动执行 run() 方法的内容,这是真正的多线程工作。 而直接执行 run() 方法,会把 r

  • 我对学习java中的方法还不熟悉。在python中,使用“函数”很容易,但我最近了解到java没有类似的功能。我有一个方法,应该返回n1和n2中的最低值。我在公共静态int函数的行中得到一个错误。。。 但语法似乎没有任何问题。

  • 这个问题是由打字错误或无法再复制的问题引起的。虽然类似的问题可能在这里讨论,但这一问题的解决方式不太可能帮助未来的读者。 我对java很陌生,试图编写一个简单的代码,包含main方法和另外两个方法(calcAverage和determineGrade)。我一直在试着让它工作,但是这两种方法都出错了 我尝试切换变量并切换方法的工作方式,但我什么也得不到。

  • 我想在三月计划一个月时间表,而不是使用静态成员。你不需要解释那些评论。“日”和“月时间表”都是类。 在我执行这段代码之前,它有两个错误。一个是“三月[]日”这句话这是一个错误。另一个是'for(int i=0;i 我不明白这些句子错在哪里。语法错误是什么?