/*
找出指定元素在指定数组中所有下标位置
要求:
a. 不允许在方法内打印展示
b. 考虑多个数据情况
c. 需要在方法外获取到下标数据信息
d. 不允许使用数组作为返回值
*/
import java.util.Scanner;
class HomeWork5 {
public static void main(String[] args) {
int[] array = {33, 11, 33, 33, 69, 22, 33};
showNumArr(array);
System.out.println();
int userIn = userInput();
int subscript = findArray(array, userIn);
showSubscript(array, subscript, userIn);
}
/**
* 展示数组
*/
public static void showNumArr(int[] numArr) {
for (int i = 0; i < numArr.length; i++) {
System.out.print(numArr[i] + " ");
}
}
/**
* 用户输入想要查找的数组中的某个数据值
*
* @return 返回用户输入的数据
*/
public static int userInput() {
int num = 0;
System.out.println("请输入您想要查找的数据值:");
Scanner sc = new Scanner(System.in);
num = sc.nextInt();
return num;
}
/**
* 返回数组中需要查找元素的下标
*
* @param int[] array 代表传入的数组
* @param num 代表用户想要查找的数据
* @return 返回数组中出现该位置的下标元素
*
*/
public static int findArray(int[] array, int num) {
int temp = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] == num) {
temp += i;
if (i < array.length - 1) {
temp *= 10;
}
}
}
//这段解决了好心的大哥指出的错误。
if (temp % 10 == 0 && array[0] != num) {
temp /= 10;
}
return temp;
}
/**
*
* 展示找到的下标位置
*
* @param num 查找下标函数的返回整数值
* @param find 代表想要查找的元素
*
*/
public static void showSubscript(int[] array, int num, int find) {
int temp = -1;
while (num > 0) {
temp = num % 10;
System.out.print(temp + " ");
num /= 10;
}
if (array[0] == find) {
System.out.print("0");
}
}
}
由于不允许返回一个数组,所以要开拓一下思维,用一个整型变量去接收这个下标值。