You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java新手求助:无法在已有类中调用目标方法

问题解决:调用方法时出现未定义错误

你的代码存在几个关键问题:

  • 你把emergencyButtonToggled定义成了内部类,而不是方法,所以main方法里调用时会提示找不到该方法。Java中方法的正确格式是返回类型 方法名(参数列表) { 逻辑代码 },不是类结构。
  • else分支里的break语句无效,当前代码没有循环或switch结构,break只能用在这两种场景下。
  • 内部类里的main方法缺少返回类型(应该是public static void main),但实际上你完全不需要这个内部类的main方法,直接把应急逻辑写成普通方法即可。
  • 类名不符合Java规范,类名应首字母大写(比如EmergencyButton),虽然不影响编译,但建议遵守规范。

修正后的代码:

import java.util.Scanner;

public class EmergencyButton {
    public static void main(String[] args) {
        Scanner value = new Scanner(System.in);
        System.out.println("Is the emergency button pressed? (Yes/No)");
        String button = value.nextLine();
        
        if (button.equals("Yes")) {
            System.out.println("The emergency button is pressed.");
            emergencyButtonToggled();
        } else if (button.equals("No")) {
            System.out.println("Buzzer is not buzzing");
            System.out.println("No emergency");
        } else {
            System.out.println("Invalid input, please enter Yes or No");
        }
        
        value.close();
    }

    // 改成静态方法,因为main是静态方法,直接调用静态方法不需要实例化类
    public static void emergencyButtonToggled() {
        System.out.println("Buzzer is buzzing");
        System.out.println("Emergency, Manual Stop");
        System.out.println("Emergency, Water Reservoirs empty");
    }
}

额外说明:

  • 把emergencyButtonToggled改成了静态方法,因为main是静态方法,静态方法可以直接调用同类中的其他静态方法,不需要创建类的实例。
  • 优化了else分支的结构,用else if替代嵌套if,代码更简洁。
  • 添加了输入合法性判断,处理用户输入非Yes/No的情况。
  • 调用value.close()关闭Scanner对象,避免资源泄漏。

内容的提问来源于stack exchange,提问作者ohgoditdoesntwork

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 02:15:34