我试图在Codewars找到一个帐户,并且很惊讶你必须向他们展示你对所提供的一种编程语言有一些基本的了解。我选择了Java,但却被困在一个练习中。代码是:
public class Person {
String name;
public Person(String personName) {
name = personName;
}
public String greet(String yourName) {
return String.format("Hi %s, my name is %s", yourName, name);
}
}
它说,"更正此代码,以便greet函数返回预期值"。问题是,我没有看到错误,事实上我将代码复制到Eclipse并且在改编Java编译器并使用版本1.6后代码工作,没有错误,如果你尝试使用main方法它返回预期值。
如果只是他们告诉你预期值是什么......提交时,无论我尝试什么,我总是得到"代码无法正常工作"。
有什么想法吗?
答案 0 :(得分:11)
你是对的;这段代码是正确的,而Codewars的人是傻瓜。他们可能希望你以其他方式切换名称。
用于在对象上调用函数并传递参数的OO比喻是"告诉对象对给定对象执行操作"。换句话说,如果对象是Jim
,那么Jim.greet("Joe")
告诉吉姆问候乔,"嗨,乔,我的名字是吉姆"是正确的做法。
实际上,由于问候语实际上是两个人之间的沟通,真正正确的做法是不将字符串名称传递给greet
,而是传递Person
,并{{1}调用greet
' s Person
方法。
答案 1 :(得分:2)
答案是:Justyou需要在String.format()中交换两个变量。
问题:
return String.format(“Hi%s,my name is%s”,name,yourName);
答案:
return String.format(“Hi%s,my name is%s”,yourName,name);
public class Person
{
String name;
public Person(String personName){
name = personName;
}
public String greet(String yourName)
{
return String.format("Hi %s, my name is %s", yourName,name);
}
}