Java方法未按预期显示问题咨询:附Move类代码及调用场景
问题分析与修复方案
嘿,我一眼就瞅出你代码里的问题啦!这是个新手很容易踩的小坑,咱们一步步捋清楚:
核心错误:字符与整数的混淆
你的convertColourtoNum方法里,把index赋值成了字符常量(比如'0'),但你实际需要返回的是整数值(比如0)。字符'0'在ASCII编码里对应的数值是48,所以当你返回index时,拿到的其实是48、49、50、51这些数字,完全不是你预期的0、1、2、3!
修复后的完整代码
把字符常量改成整数常量就搞定了,另外我还给你加了个toString方法,方便直接打印Move对象的信息:
public class Move { private char colour; private int number; // 构造方法 public Move(char colour, int number) { this.colour = colour; this.number = number; } public static int convertColourtoNum(char colour) { int index = 0; if (colour == 'R') index = 0; // 这里改成整数0,不是字符'0' else if (colour == 'Y') index = 1; else if (colour == 'G') index = 2; else index = 3; return index; } // 可选:添加toString方法,方便直接打印Move对象的完整信息 @Override public String toString() { return "颜色对应数字:" + convertColourtoNum(this.colour) + ",输入数字:" + this.number; } }
正确的调用方式
现在你可以这样调用,就能得到预期的结果了:
Move m = new Move('R', 4); // 方式1:直接调用静态转换方法 System.out.println("R对应的数字是:" + Move.convertColourtoNum(m.colour)); // 方式2:用toString方法直接打印整个Move对象 System.out.println(m);
运行后输出会是:
R对应的数字是:0 颜色对应数字:0,输入数字:4
内容的提问来源于stack exchange,提问作者aNaN
相关产品推荐
相关产品推荐

