Java新手求助:如何将字符串数组传入函数并返回以实现代码复用
关于Java中字符串数组传入函数实现复用的解决方案
嘿,很高兴看到你上手写Java井字棋啦!你想把字符串数组传入函数实现复用的思路非常棒——这正是代码复用的核心思路之一。其实你已经在尝试这么做了,不过咱们可以调整下代码,修正几个小问题,让它真正实现复用的效果。
首先先指出你代码里的两个小错误:
- 数组索引问题:Java的数组索引是从
0开始的,你定义的field数组长度是9,索引范围是0-8,但你在board方法里用了field[1]到field[9],这会触发数组越界异常。 - 格式化占位符错误:
String.format里的占位符应该是%s,而不是$s,否则无法正确替换数组内容。
接下来,咱们修改代码,让board方法真正能复用:这个方法的作用就是接收棋盘数组,然后打印出当前的棋盘状态。以后不管棋盘怎么更新,只要调用这个方法传入最新的数组,就能打印出最新状态,这就是复用的体现。
修改后的完整代码如下:
package Lesson1; public class TicTacToe { public static void main(String args[]) { // 初始化棋盘数组,索引0-8对应棋盘的1-9位置 String field[] = {"1","2","3","4","5","6","7","8","9"}; // 第一次打印初始棋盘 board(field); System.out.println("Choose your field"); String printX = "X"; String printO = "O"; // 举个复用的例子:假设玩家选择了位置5(对应索引4),更新棋盘后再次打印 field[4] = printX; board(field); // 这里复用board方法打印更新后的棋盘 } // 这个方法负责接收棋盘数组并打印,实现复用 public static void board(String[] field){ System.out.println("Printing board"); System.out.println("-------------"); // 修正索引和占位符,对应数组的0-2、3-5、6-8索引 System.out.println(String.format("| %s | %s | %s |",field[0],field[1],field[2])); System.out.println("|---|---|---|"); System.out.println(String.format("| %s | %s | %s |",field[3],field[4],field[5])); System.out.println("|---|---|---|"); System.out.println(String.format("| %s | %s | %s |",field[6],field[7],field[8])); System.out.println("-------------"); // 因为我们只是打印棋盘,不需要返回数组,所以返回类型改成void更合适 } }
这里几个关键的复用要点:
- 把棋盘打印逻辑封装到独立的
board方法中,这个方法只负责接收棋盘数组并打印,职责单一。 - 后续任何时候需要打印棋盘(比如初始状态、玩家落子后、AI落子后),只需要调用
board(field),传入当前的棋盘数组即可,不用重复写打印代码。 - 因为数组是引用类型,在
main方法中修改数组内容后,board方法能直接拿到修改后的最新内容,非常适合这种需要共享状态的场景。
这样调整后,你的代码不仅实现了数组传入函数的复用,还修正了潜在的异常问题,后续扩展功能也会更方便~
内容的提问来源于stack exchange,提问作者Mihail Danilov
相关产品推荐
相关产品推荐

