更改字符串以匹配char数组

时间:2015-10-17 19:37:55

标签: java arrays string

我对编程很缺乏经验,所以请耐心等待。

我必须编写一个模仿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识别为变量。

6 个答案:

答案 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();