接受来自用户的字符串,例如:[Aamir,Hrithik,Salman] 现在,当我通过Hrithik时,它应该返回其索引吗? 怎么样?
public static void main(String[] args)
{
int str,i;
String check;
Scanner sc=new Scanner(System.in);
System.out.println("Enter string array size: ");
str=sc.nextInt();
String arr[]= new String[str];
System.out.println("Enter elements for String array: ");
for(i=0;i<str;i++)
{
arr[i] = sc.next();
}
System.out.println(Arrays.toString(arr));
System.out.println("Enter the name to check index of it:");
check=sc.next();
if(arr[i].equals(check))
{
System.out.println(i);
}
}
答案 0 :(得分:0)
检查数组arr[i].equals(check)
的单个元素没有太大帮助。请注意,i
尚未从上一次循环执行中重置,您可能会得到无效的数组索引(i >= arr.length
)。
最好遍历数组的所有元素以查找匹配项:
for(i = 0; i < str; ++i) {
if (arr[i].equals(check)) {
System.out.println(i);
break;
}
}
答案 1 :(得分:0)
将数组转换为列表,然后使用indexOf
方法。
String[] arr = {"Aamir","Hrithik","Salman"};
String target = "Hrithik";
System.out.println(Arrays.asList(arr).indexOf(target));
答案 2 :(得分:0)
您需要在末尾添加一个for循环以遍历整个数组。下面的代码应该工作。我还做了一些其他编辑,使代码总体上更好。
旁注:您应该对代码进行更好的格式化,以使其更具可读性。在大多数IDE上,您可以使用CTRL / CMD + SHIFT + F自动格式化代码。
public static void main(String[] args) {
int str, i;
String check;
Scanner sc = new Scanner(System.in);
System.out.println("Enter string array size: ");
str = sc.nextInt();
String arr[] = new String[str];
System.out.println("Enter elements for String array: ");
for (i = 0; i < str; i++) {
arr[i] = sc.next();
System.out.println(arr[i]);
}
System.out.println("Enter the name to check index of it:");
check = sc.next();
for (int j = 0; j < str; j++) {
if (arr[j].equals(check)) {
System.out.println(j);
break;
}
}
}
答案 3 :(得分:0)
有多种方法可以返回数组内的值的索引。您可以:
使用循环:
for (i = 0; i < str; i++) {
if (arr[i].equals(check)) {
System.out.println("Index of value: " + i);
break;
}
}
使用Arrays
实用程序类:
System.out.println("Index of value: " + Arrays.asList(arr).indexOf(check));
使用Apache Commons Lang ArrayUtils
类:
System.out.println("Index of value: " + ArrayUtils.indexOf(arr, check));