需要Java帮助来设置和返回字符串



我是java新手,正在努力完成入门课程,我真的很挣扎。我已经包括了我认为应该工作的代码,但当我运行测试时,它们失败并返回null。有人可以帮助看看我的代码有什么问题吗?非常感谢

public class CustomString {
String myString;
boolean isSet;
public CustomString() {
this.myString = (null);
this.isSet = (false);
}
}

如果字符串没有被setString设置,它应该返回null。setString应该设置当前字符串的值并设置此值。isSet为true。如果给定字符串为空,设置这个。isSet为false

public String getString() {
if (this.myString == null || this.isSet == false) {
return null;
} else {
return this.myString;
}
}
public void setString(String string) {
if (this.myString == null) {
this.isSet = false;
} else {
this.isSet = true;
}
}

一般代码上的指针很少:

  • 你不需要使用this.foo,除非foo已经在方法的作用域中定义了
  • (null)(false)不需要括号
  • 如果myString未设置,它将为null,因此getString中的逻辑是无用的,因为return myString将具有相同的结果,除非isSet可以以setString以外的方式更改

至于这个问题,setString实际上并没有设置字符串,你需要在开始时添加myString = string

setString应设置当前字符串的值并设置此值。isSet为true。如果给定字符串为空,设置这个。isSet为false

你在描述setString()应该:

  • 保存新的字符串值(如果它不是null),并记录一个值"true";forisSet
  • 记录一个值"false";对于isSet,如果输入字符串为"null">

您的代码很接近。但是,您不需要检查this.myString == null,而是要检查输入值(我将其命名为"newString")下文)。同样,如果输入字符串非空,你不会保存newString"价值的地方;您可以看到下面的代码确实用this.myString = newString保存了新字符串。

public void setString(String newString) {
if (newString == null) {
this.isSet = false;
// seems like a good idea to also do: this.myString = null;
} else {
this.isSet = true;
this.myString = newString;
}
}

您现在在setter级别上有了逻辑。也许它更适合getter级别(所需的逻辑更少)。

public class CustomString {
private String myString = null;
public boolean isSet() {
return myString != null;
}
public void setString(String newValue) {
myString = newValue;
}
public String getString() {
return myString;
}
}

现在您可以使用lombok快捷地创建整个类。

@Data
public class CustomString {
private String myString;
public boolean isSet() {
return myString != null;
}
}

setString方法有两个问题。

  1. 您需要在属性myString
  2. 中设置字符串。
  3. 您需要检查"字符串;value为空,而不是"mystring">

像这样:

public void setString(String string) {
if (this.string == null) {
this.isSet = false;
} else {
this.isSet = true;
this.myString = string;
}
}

相关内容

  • 没有找到相关文章

最新更新