Java入门:PlayingCard类get/set方法编写及参数长度错误解惑
问题原因分析与修正方案
你遇到的「实际参数与形式参数列表长度不同」错误,核心问题出在**setValue和setSuit这两个set方法的定义上**。
错误根源
Java里的set方法作用是给类的成员变量赋值,必须接收一个和成员变量类型匹配的参数,用来更新变量值。但你写的set方法没有定义参数,当你在代码里调用setValue(10)或setSuit("Hearts")这类带参数的调用时,就会因为方法定义无参数、调用时传了参数,导致参数列表长度不匹配的错误。
另外,set方法通常不需要返回值(返回类型为void)——返回变量值是get方法的职责,set方法只负责修改值。
修正后的完整代码
class PlayingCard { int value; String suit; // get方法:获取变量值,无需参数 public int getValue() { return value; } public String getSuit() { return suit; } // set方法:接收参数更新变量,返回void public void setValue(int newValue) { this.value = newValue; } public void setSuit(String newSuit) { this.suit = newSuit; } }
关键说明
setValue需要接收一个int类型参数(比如newValue),通过this.value = newValue把成员变量value更新为传入的值。setSuit同理,需要接收一个String类型参数来更新suit变量。- set方法返回
void是JavaBean的规范写法,既符合逻辑(只修改不返回),也能避免调用时的参数匹配问题。
用修正后的代码调用card.setValue(5)或card.setSuit("Diamonds")时,就不会再出现参数列表不匹配的错误了。
内容的提问来源于stack exchange,提问作者Sheebs
相关产品推荐
相关产品推荐

