Closed. This question needs debugging details。它当前不接受答案。
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
4年前关闭。
Improve this question
我的代码比较了两个单词之间的相等性。如果字符串相等,则输出值“TRUE”。否则,它返回false。正在使用Java“等于”功能
我需要将一些选定的字母提取到数组中并将其转换为字符串。转换之后,该函数返回字符串。但是比较会导致错误的值。是否有其他方法可以将数组转换为字符串,以便此程序提供正确的结果。
另外,如注释中所述,您可以清理方法,而不必指定数组长度,如下所示:
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
4年前关闭。
Improve this question
我的代码比较了两个单词之间的相等性。如果字符串相等,则输出值“TRUE”。否则,它返回false。正在使用Java“等于”功能
class k{
public static void main(String args[]){
String s1="Sach";
String s2=word();
String s3=new String("Sach");
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
}
public static String word() {
char[] str=new char[100];
str[0]='S';
str[1]='a';
str[2]='c';
str[3]='h';
String ss=new String(str);
System.out.println(ss);
return ss;
}
}
我需要将一些选定的字母提取到数组中并将其转换为字符串。转换之后,该函数返回字符串。但是比较会导致错误的值。是否有其他方法可以将数组转换为字符串,以便此程序提供正确的结果。
最佳答案
在您的方法中从中创建新String
的字符数组包含的字符数超过了4个,因此它当然不会与其他String
相等。
确切地说,由于您未指定值并且使用默认值,因此数组将保留您指定的4个字符和另外96个空字符('\ u0000')。
将方法更新为仅指定4个字符的数组,如下所示,您将获得预期的结果:
public static String word() {
char[] str = new char[4];
str[0] = 'S';
str[1] = 'a';
str[2] = 'c';
str[3] = 'h';
String ss = new String(str);
System.out.println(ss);
return ss;
}
另外,如注释中所述,您可以清理方法,而不必指定数组长度,如下所示:
public static String word() {
char[] str = new char[] {'S', 'a', 'c', 'h'};
return new String(str);
}