![](/img/trans.png)
[英]Character.IsDigit returns false instead of true on an integer Java
[英]Java Hashset returns false instead of true
这段代码不断返回false,我无法弄清楚原因。
List<String> angry = new ArrayList<String>();
while ((anger = angerSt.readLine()) != null) {
angry.add(anger);
}
angerSt.close();
String[] angrywords = angry.toArray(new String[0]);
String word = "mad"
Set<String> angryWordSet = new HashSet<String>(Arrays.asList(angrywords));
if(angryWordSet.contains(word))
{
System.out.print("Yes");
return true;
}
else return false;
angryWordSet包含疯狂,愤怒,愤怒和发怒的字符串。 我把它打印出来以确保它在那里。 我不知为何会变得虚假。 有人可以帮忙吗?
以下代码完美运行:
public static void main(String s[])
{
List<String> angry = new ArrayList<String>();
angry.add("a");
angry.add("b");
angry.add("c");
angry.add("mad");
angry.add("b");
angry.add("b");
String word = "mad";
Set<String> angryWordSet = new HashSet<String>(angry);
if (angryWordSet.contains(word))
{
System.out.print("Yes");
}
else
{
System.out.print("No");
}
}
我假设当你做readline时,单词会添加'\\ n'或'\\ r'字符,这就是为什么它与“word”varibale不匹配。 请验证,我没有测试它:)
我认为,你必须检查每个angryWordSet
元素是否存在前导和尾随空格。
for (String s : angryWordSet) {
if (s.trim().equals(word)) return true;
}
return false;
关于错误的尝试给出答案。 我会留下前一个答案的一部分,希望它对某人有帮助。
Object[] toArray()
以适当的顺序(从第一个元素到最后一个元素)返回一个包含此列表中所有元素的数组。 返回的数组将是“安全的”,因为此列表不会保留对它的引用。 (换句话说,此方法必须分配一个新数组)。 因此调用者可以自由修改返回的数组。
<T> T[] toArray(T[] a)
以适当的顺序(从第一个元素到最后一个元素)返回一个包含该列表中所有元素的数组; 返回数组的运行时类型是指定数组的运行时类型。 如果列表适合指定的数组,则返回其中。 否则,将使用指定数组的运行时类型和此列表的大小分配新数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.