Java算法:(四)
文章目录
- Java算法:(四)
- 一、查找元素在数组中的索引
- 二、考虑数组中有多个重复的情况
一、查找元素在数组中的索引
需求:
-
设计一个方法,查找元素在数组中的索引位置
-
已知一个数组 arr = {19, 28, 37, 46, 50};
-
键盘录入一个数据,查找该数据在数组中的索引
-
并在控制台输出找到的索引值。如果找不到,则输出 -1。
package com.liujintao.index;
import java.util.Scanner;
public class ArrayIndex {
public static void main(String[] args) {
int[] arr = {19, 28, 37, 46, 50};
int result = getArrayIndex(arr);
System.out.println(result);
}
/**
* 该方法的目的是完成数组索引的查找
*/
public static int getArrayIndex(int[] arr) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入数组元素");
int indexNum = sc.nextInt();
for (int i = 0; i < arr.length; i++) {
if (arr[i] == indexNum) {
return i;
}
}
return -1;
}
}
二、考虑数组中有多个重复的情况
需求:
-
设计一个方法,查找元素在数组中的索引位置(考虑多个相同的情况)
-
已知一个数组 int[] arr = {19, 28, 37, 46, 50, 28, 28, 19};
-
键盘录入一个数据,查找该数据在数组中的索引
-
并在控制台输出找到的索引值。如果找不到,则输出 -1。
package com.liujintao.index;
import java.util.Scanner;
public class ArrayIndex {
public static void main(String[] args) {
int[] arr = {19, 28, 37, 46, 50, 28, 28, 19};
int[] result = getArrayIndex(arr);
// 如果返回的数组为 0 ,表示没有 返回-1, 如果有长度,则返回数组值(索引号)
if (result.length == 0) {
System.out.println(-1);
} else {
for (int i = 0; i < result.length; i++) {
System.out.println(result[i]);
}
}
}
/**
* 该方法的目的是完成数组索引的查找
*/
public static int[] getArrayIndex(int[] arr) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入数组元素:");
// 1、统计相同数组元素的个数
int indexNum = sc.nextInt();
int count = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == indexNum) {
count++;
}
}
// 2、创建新数组,遍历查找相同的元素,存入新数组中
int[] indexArr = new int[count];
int a = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == indexNum) {
// a :表示的是新数组的下标索引
indexArr[a] = i;
a++;
}
}
// 3、将新数组返回给调用者
return indexArr;
}
}
结果示例