类内方法调用及Puzzle类二维数组设置优化问题咨询
Hey there! Let's tackle your questions with clear, practical examples—no jargon, just straight-to-the-point solutions.
1. 如何在同一个类中实现方法之间的调用?
在同一个类里调用方法其实很直观,分两种常见场景:
- 如果是非静态方法:直接写
方法名()或者this.方法名()(this可以省略,但加上能更清晰地表明是调用当前实例的方法) - 如果是静态方法:需要用
类名.方法名()来调用(也可以直接写方法名,但加上类名可读性更强)
举个简单示例:
public class MyClass { // 非静态方法 public void methodA() { System.out.println("This is Method A"); // 调用同类的非静态方法methodB methodB(); // 也可以写成 this.methodB(); } public void methodB() { System.out.println("This is Method B"); } // 静态方法 public static void staticMethodX() { System.out.println("This is Static Method X"); // 调用同类的静态方法staticMethodY MyClass.staticMethodY(); } public static void staticMethodY() { System.out.println("This is Static Method Y"); } }
2. 在Puzzle类中设置二维数组的更优方案,以及OutputTable调用SetTable的实现
首先说二维数组的优化思路:
- 如果数组大小固定,直接将其声明为类的私有成员变量,在
SetTable方法中初始化(也可以用构造函数/初始化块提前初始化,看你的业务需求) - 如果需要动态调整数组大小,用
ArrayList<List<Integer>>(假设存整数)代替原生二维数组,灵活性更高 - 按照要求,所有变量都放在Puzzle类内部,所以把二维数组定义为类的私有成员变量,符合面向对象的封装规范
下面是完整的Puzzle类实现,包含数组初始化、方法调用和输出逻辑:
public class Puzzle { // 二维数组作为类的私有成员变量,满足"所有变量置于类内部"的要求 private int[][] table; // 初始化二维数组的方法 public void SetTable() { // 这里以3x3的数组为例,你可以根据需求修改大小和内容 table = new int[3][3]; // 填充示例数据 for (int i = 0; i < table.length; i++) { for (int j = 0; j < table[i].length; j++) { table[i][j] = i * 3 + j + 1; } } } // 输出数组的方法,先调用SetTable初始化再打印 public void OutputTable() { // 调用同类的SetTable方法 this.SetTable(); // 也可以直接写 SetTable(); // 打印二维数组 System.out.println("Puzzle Table:"); for (int[] row : table) { for (int num : row) { System.out.print(num + "\t"); } System.out.println(); } } // 测试用的main方法 public static void main(String[] args) { Puzzle puzzle = new Puzzle(); puzzle.OutputTable(); } }
代码说明:
table作为私有成员变量,完全符合变量置于类内部的要求OutputTable方法中通过this.SetTable()调用初始化方法,确保每次输出前都能拿到最新的数组状态- 如果需要动态调整数组大小,只需把
int[][] table改成ArrayList<List<Integer>> table,然后在SetTable里初始化table = new ArrayList<>(),再逐行添加元素即可
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

