java数组 代码优化 我能想到的就是下面的代码(未考虑Arrays类)

// 定义一个函数,接收一个数组与一个要查找的元素,如果该元素存在数组中,那么返回该元素在数组中的索引值,如果不存在返回-1。(不要严格要求使用二分查找法)

import java.util.Scanner;
class demo2
{
public static void main(String[] args){
int[] index=lookfornum();
for (int i=0;i<index.length ;i++ ){
System.out.println(index[i]);
}
}
//定义一个函数接受数组,返回数组类型。
public static int[] lookfornum(){
Scanner le=new Scanner(System.in);
System.out.print("定义数组的长度:");
int arrlength=le.nextInt();
int[] arr =new int[arrlength];
for (int i=0;i<arrlength ;i++)
{
System.out.print("输入"+i+"元素值:");

arr[i]=le.nextInt();
}
System.out.print("输入要查找元素:");
int looknum=le.nextInt();
//确定与输入查找元素相同元素的个数
int j=1;
for (int i=0;i<arrlength ;i++ ){
if (arr[i]==looknum){
j++;
}
}
//定义返回索引值数组
int[] a=new int[j];
//查找相同索引值
for (int r=0;r<j ;r++ ){
for (int i=0;i<arrlength ;i++ ){
if (arr[i]==looknum){
a[r]=i;
}
else{
a[r] = -1;
}
}
}
return a;
}
}

各位前辈能帮我看看代码有什么地方可以改改啊,总感觉这样太复杂啊》谢谢

逻辑比较繁琐,而且后面有错误。先说你代码里的错误:

 //定义返回索引值数组
int[] a=new int[j];
//查找相同索引值
for (int r=0;r<j ;r++ ){
for (int i=0;i<arrlength ;i++ ){
if (arr[i]==looknum){
/** 逻辑错误:需要在执行a[r]=i;后跳出本层循环**/
a[r]=i;
}
else{
a[r] = -1;
}
}
}

我觉得按照你认定的可能存在多个位置符合要求的逻辑,可以这么写会好一些:如果查到返回所有位置索引列表,否则返回空的列表。

    public static void main(String[] args) {
        java.util.List<Integer> indexList = lookfornum();
        if(indexList.isEmpty()){
            System.out.println("没有查到!");
        }else{
            System.out.println("查到如下位置:");
            for (Integer i : indexList) {
                System.out.print(indexList.get(i) + " ");
            }
            System.out.println();
        }
    }

    // 定义一个函数接受数组,返回数组类型。
    public static java.util.List<Integer> lookfornum() {
        Scanner le = new Scanner(System.in);
        System.out.print("定义数组的长度:");
        int arrlength = le.nextInt();
        int[] arr = new int[arrlength];
        for (int i = 0; i < arrlength; i++) {
            System.out.print("输入" + i + "元素值:");

            arr[i] = le.nextInt();
        }
        System.out.print("输入要查找元素:");
        int looknum = le.nextInt();

        // 确定与输入查找元素相同元素的个数
        java.util.List<Integer> list = new java.util.ArrayList<Integer>();
        for (int i = 0; i < arrlength; i++) {
            if (arr[i] == looknum) {
                list.add(i);
            }
        }

        return list;
    }

System.out.print(indexList.get(i) + " ");
上面修改成:
System.out.print(i + " ");