我对编程很缺乏经验,所以请耐心等待。
我必须编写一个模仿String类的某些属性的类。在这个特定的方法中,我必须获取一个char数组并获取一个匹配它的字符串。
这是我到目前为止所做的:
1 char[] word = new char[80];
2 int wordLength = word.length;
3
4 public String getString () {
5 String s;
6 s.length() = word.length;
7 for (int i = 0; i < word.length; i++) {
8 s.charAt(i) = word[i];
9 }
10 return s;
11 }
我应该提到char数组在这里为null,但是在main方法中,为它分配了值。
这是我在第6和第8行得到的错误:
The left-hand side of an assignment must be a variable
我不知道为什么它没有将String s识别为变量。
答案 0 :(得分:5)
我不确定你是否被允许使用它,但你可以从char数组创建一个String,如下所示:
String s = new String(charArray);
现在你的代码:
String s;
s.length() = word.length;
这里有两个问题,首先是s未初始化,在你可以使用它之前,你需要为它分配一个值:
String s = new String();
由于这会创建一个全新的String
,因此最好使用以下代码,因为字符串是chached:
String s = "";
Next String是一个不可变类,这意味着一旦创建了属性,就无法更改它们。另外,s.length()返回一个int值和NO指针/引用,这意味着你不能像那样为它分配一个新值。与
相同s.charAt(i) = word[i];
根本不可能。
要通过char创建String
char,您可以执行以下操作:
String s = "";
for (char c : charArray)
{
s += c;
}
请注意,s += c
每次都会创建一个新的String
。
最好使用StringBuilder
:
StringBuilder s = new StringBuilder();
for (char c : charArray)
{
s.append(c);
}
s.toString();
再一次,你可以在一行中做到这一点:
String s = new StringBuilder().append(charArray).toString();
答案 1 :(得分:4)
错误在于:
s.length() = word.length;
s.charAt(i) = word[i]; // same here
您正在尝试将长度分配给length方法的返回值。
另请注意,String s
未初始化。
最简单的getString()
形式如下:
public String getString () {
String s = "";
for (int i = 0; i < word.length; i++) {
s = s + word[i];
}
return s;
}
最好使用StringBuilder
而不是字符串连接。
public String getString () {
StringBuilder builder = new StringBuilder();
for (int i = 0; i < word.length; i++) {
builder.append(word[i]);
}
return builder.toString();
}
答案 2 :(得分:3)
错误正如它在锡上所说的那样。赋值的左侧必须是变量。
变量基本上是一个可以保存值的容器,您可以为这些容器赋值。例如,在行
中int wordLength = word.length;
您定义了一个名为wordLength的容器,并在类变量word.length
中指定了该值。这里,word.length
是表示字符数组长度的值。
无论如何,试试这个
s.length() = word.length;
然后请记住s.length()
是一个方法,它返回一个值,而不是一个变量,所以,你试图为一个值赋值。哪个没有意义。
答案 3 :(得分:2)
s.charAt(i)
和s.length()
仅返回值。
你只需要这个:
String s = String.valueOf(word);
答案 4 :(得分:2)
调用方法长度会返回一个值。代码的错误在于您尝试将值赋给返回无意义值的方法。 其次,出于性能目的,最好使用StringBuilder类从char数组构建字符串。您在创建时需要做的就是在word.length()的帮助下指定长度,然后在for循环中,调用方法append将内容添加到构建器。最后,使用方法toString()返回字符串构建器字符串。
public String getString () {
StringBuilder sb = new StringBuilder(word.length);
for (int i = 0; i < word.length; i++) {
sb.append(word[i].toString());// you must give a string to the string builder
}
return sb.toString();
}
答案 5 :(得分:1)
s.length() = word.length;
你做不到。 length()
方法是提供String
大小的访问方法。它不是变量。注意:
int variable; // the non-initialized variable
s.length(); // the method invoking
variable = s.length(); // the variable initializing
您可以使用以下代码段:
String s = "";
for (int i = 0; i < word.length; i++) {
s += word[i]; // Both "+" and "+=" operators are a bad practice
}
return s;
更好的做法是使用StringBuilder
将字符连接到一个String
:
StringBuilder builder = new StringBuilder();
for (int i = 0; i < word.length; i++) {
builder.append(word[i]);
}
return builder.toString();