等于方法不在字符串[]中工作

时间:2014-05-27 07:44:04

标签: java equals

public String modUsernames[] = {"Test", "Test2"};
public String adminUsernames[] = {"Mod Jack", "Mod Demon"};

if (username.equals(modUsernames)) {
    rights = 1;
}
if (username.equals(adminUsernames)) {
    rights = 2;
}

为什么这不起作用,我该怎么做才能让它发挥作用?

4 个答案:

答案 0 :(得分:3)

(username.equals(modUsernames)) 

不应该将String与Array进行比较,如果username是一个数组,那么你可以检查两者是否都是这样的。

请使用Arrays.equals(ar1,ar2)

或者使用数组索引并使用循环逐个检查。

username.equals(modUsernames[0])

或者您可以使用Arrays.toString()并使用contains方法

Arrays.toString(modUsernames).contains(username);

答案 1 :(得分:2)

假设usernameString:变量modUsernames是一个String的数组,它不是一个String。您必须将String username与该阵列的一个elemenet进行比较:

if (username.equals(modUsernames[0]))

例如。

注意:您访问数组元素的方式是使用索引

someArray[index] 

大多数编程语言中的索引都以0开头。因此,如果数组的长度为2(即它有两个元素),则可以使用索引01

答案 2 :(得分:2)

正如其他人所述,您无法将StringString[]进行比较,您可以做的是检查String中是否包含String[],例如:

if (Arrays.asList(modUsernames).contains(username)){
   rights = 1;
}

答案 3 :(得分:1)

这是你打算比较的意图。如果要比较arrays,那么您可以选择Arrays.equal(arr1,arr2)。或者如果您打算比较索引值,那么您可以转到string.equals(str2);