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

Java中如何调用类内的isHappy布尔方法?快乐数实现求助

解决Main类main方法调用isHappy报错的问题

报错的核心原因是:main是静态方法,若Solution类中的isHappy是非静态方法,静态方法无法直接调用类的非静态成员——非静态方法属于类的实例,必须先创建类对象才能调用。

下面是两种可行的解决方式:

方式一:创建Solution类实例调用非静态方法

在main方法中先实例化Solution类,再通过对象调用isHappy:

public class Main {
    public static void main(String[] args) {
        // 创建Solution类的实例
        Solution solution = new Solution();
        // 通过实例调用isHappy方法
        boolean is23Happy = solution.isHappy(23);
        System.out.println(is23Happy);
    }
}

方式二:将isHappy和getNext改为静态方法

如果Solution类不需要维护任何实例状态,直接把这两个方法改成静态方法,就能通过类名直接调用:
修改Solution类:

import java.util.HashSet;
import java.util.Set;

public class Solution {
    // 改为静态方法
    public static int getNext(int n) {
        int totalSum = 0;
        while (n > 0) {
            int digit = n % 10;
            totalSum += digit * digit;
            n = n / 10;
        }
        return totalSum;
    }

    // 改为静态方法
    public static boolean isHappy(int n) {
        Set<Integer> seen = new HashSet<>();
        while (n != 1 && !seen.contains(n)) {
            seen.add(n);
            n = getNext(n);
        }
        return n == 1;
    }
}

然后在main方法中直接通过类名调用:

public class Main {
    public static void main(String[] args) {
        boolean is23Happy = Solution.isHappy(23);
        System.out.println(is23Happy);
    }
}

两种方式的选择:

  • 若Solution后续需要添加实例变量(比如记录计算次数),优先用方式一;
  • 若只是单纯提供工具方法,方式二更简洁直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:50:40