输入字符串,结果输出它在数组里的位置,java
时间: 2024-10-13 20:17:49 浏览: 6
在Java中,如果你有一个数组并想要查找给定字符串在其中的位置,你可以使用`Arrays.binarySearch()`方法如果数组已排序,或者遍历数组元素来进行线性搜索。下面是两个基本示例:
**使用`binarySearch()`方法(适用于有序数组):**
```java
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String[] array = {"apple", "banana", "cherry", "date"};
Arrays.sort(array); // 需要对数组先排序
String target = "banana";
int index = binarySearch(array, target);
if (index >= 0) {
System.out.println("String '" + target + "' found at position " + (index + 1)); // 返回的是下标,注意加1
} else {
System.out.println(target + " is not in the array.");
}
}
// Binary Search function for sorted arrays
private static int binarySearch(String[] arr, String target) {
int low = 0;
int high = arr.length - 1;
while (low <= high) {
int mid = low + (high - low) / 2;
if (arr[mid].equals(target)) {
return mid; // 如果找到目标直接返回
} else if (arr[mid].compareTo(target) < 0) { // 保持左边的值小于右边
low = mid + 1;
} else { // 保持右边的值大于左边
high = mid - 1;
}
}
return -low; // 当找不到时返回插入位置(-low表示插入索引)
}
}
```
**使用线性搜索(适用于无序数组):**
```java
public class Main {
public static void main(String[] args) {
String[] array = {"apple", "banana", "cherry", "date"};
String target = "banana";
for (int i = 0; i < array.length; i++) {
if (array[i].equals(target)) {
System.out.println("String '" + target + "' found at position " + (i + 1));
break; // 找到就退出循环
}
}
if (i == array.length) {
System.out.println(target + " is not in the array.");
}
}
}
```