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

Java类跨文件导入求助:将Area类导入TheResults文件并运行

解决跨文件导入Java类的问题

咱们一步步拆解你代码里的问题,帮你实现跨文件调用类的需求:

核心问题分析

你遇到的「找不到符号」错误,主要是由这些问题导致的:

  1. 内部类拆分错误:原来的Area是TheResults的内部类,拆分到单独文件时,必须改成独立的public类,且文件名必须和类名严格一致(也就是Area.java)。
  2. 方法名冲突:Area类里的Area(double width, double height)方法和类名重名,但它有返回值,这不是合法的构造方法(构造方法没有返回类型),必须改名避免混淆。
  3. 静态方法调用逻辑错误:你创建了Area的实例r,但Area里的方法都是static的——静态方法不需要实例化对象,直接用类名.方法名调用即可;如果想通过实例调用,得把方法改成非静态。
  4. 重复定义变量:main方法里两次定义了Scanner input,这会直接触发编译错误。
  5. 未初始化变量:area变量没有赋值就直接传入方法,编译会报错。
  6. 不存在的方法:你调用了displayArea(),但原代码里根本没实现这个方法,需要补充或调整逻辑。

正确的跨文件代码实现

第一个文件:Area.java

把Area类独立成单独文件,修正方法名和结构:

public class Area {
    // 验证宽高的静态方法
    public static boolean validate(double width, double height) {
        return width > 9 && height > 9;
    }

    // 计算面积的静态方法,改名避免和类名冲突
    public static double calculateArea(double width, double height) {
        return width * height;
    }
}

第二个文件:TheResults.java

修正Scanner重复定义、变量初始化和方法调用逻辑:

import java.util.Scanner;

public class TheResults {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        double width;
        double height;

        System.out.print("Width = ");
        width = input.nextDouble();
        System.out.print("Height = ");
        height = input.nextDouble();
        System.out.println();

        // 调用Area类的静态验证方法
        if (Area.validate(width, height)) {
            System.out.println("We can calculate the area.");
            // 调用Area类的静态计算方法并输出结果
            double area = Area.calculateArea(width, height);
            System.out.println("The area is " + area);
        } else {
            System.out.println("The width and height are too small.");
        }

        input.close(); // 记得关闭Scanner资源
    }
}

可选:通过实例对象调用方法

如果你更习惯用实例化对象的方式调用方法,可以修改Area.java为非静态方法:

public class Area {
    public boolean validate(double width, double height) {
        return width > 9 && height > 9;
    }

    public double calculateArea(double width, double height) {
        return width * height;
    }
}

对应的TheResults.java调用逻辑改成:

// 实例化Area对象
Area areaCalculator = new Area();
if (areaCalculator.validate(width, height)) {
    System.out.println("We can calculate the area.");
    double area = areaCalculator.calculateArea(width, height);
    System.out.println("The area is " + area);
}

把两个文件放在同一个包下(或正确配置类路径),就能正常编译运行了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:27:12