打印最后一次出现(打印错误)

时间:2019-01-24 12:09:04

标签: java

public class TestForMatch2
{
    public static void main(String[] args)
    {
        int[] numbers1 = {0,2,4,6,7,11,0};
        int[] numbers2 = {-7,5,9,10,5,0};
        System.out.println(findTarget(numbers1,5));
        System.out.println(findTarget(numbers1,0));
        System.out.println(findTarget(numbers2,5));
        System.out.println(findTarget(numbers1,-1));
    }
    public static int findTarget(int[] arr, int target)
    {
        if (arr == null) {
            return -1;
        }
        int y = 0;
        int g = 0;
        for(int i = 0; i <= arr.length-1; i++) {
            if (target == arr[i]) {
                y = i;
                //return y;
            }
        }
        System.out.println(y);
        return -1;
    }
}

Output:
0
-1
6
-1
4
-1
0
-1

如您所见,正在打印-1。如果我删除了返回-1,它将给我一个错误。如何清除没有错误的-1?

这就是要做的事情。

编写Java方法来测试整数数组是否包含特定值。 如果值在数组中,则返回元素的索引。如果该值不止一次,则该方法将返回该值最后一次出现的索引。 如果该值不在数组中,则返回-1。

复制并粘贴以下代码。然后完成该方法。

public class Main
{
    public static void main(String[] args)
    {
        int[] numbers1 = {0,2,4,6,7,11,0};
        int[] numbers2 = {-7,5,9,10,5,0};
        System.out.println(findTarget(numbers1,5));
        System.out.println(findTarget(numbers1,0));
        System.out.println(findTarget(numbers2,5));
        System.out.println(findTarget(numbers1,-1));
    }
    public static int findTarget(int[] arr, int target)
    {
        //Type your code here
    }
}

这是期望的结果。忽略左侧的数字。我将其放在此处以强调第5号的空格。谢谢您的时间。

  1  -1
  2  6
  3  4
  4  -1
  5

4 个答案:

答案 0 :(得分:1)

public static void main(String[] args)
    {
        int[] numbers1 = {0,2,4,6,7,11,0};
        int[] numbers2 = {-7,5,9,10,5,0};
        System.out.println(findTarget(numbers1,5));
        System.out.println(findTarget(numbers1,0));
        System.out.println(findTarget(numbers2,5));
        System.out.println(findTarget(numbers1,-1));
    }
    public static int findTarget(int[] arr, int target)
    {
        if (arr == null) {
            return -1;
        }
        int targetIndex = -1;
        for(int i = 0; i <= arr.length-1; i++) {
            if (target == arr[i]) {
                targetIndex = i;
            }
        }
        return targetIndex;
    }

创建一个变量targetIndex,该变量将保留目标元素的索引,最初为-1,如果我们在索引i处找到目标元素,则targetIndex变为i,然后将其返回。

答案 1 :(得分:0)

初始化y = -1并返回y,无论您输入什么函数,都将返回-1

答案 2 :(得分:0)

您每次迭代System.out做过两次。你知道为什么吗?

您始终打印y是-首先System.out()

System.out.println(y);

然后您总是返回-1:

return -1;

打印什么也可以-第二System.out()

System.out.println(findTarget(numbers1,5));

您说:“如果我删除返回-1,则会给我一个错误。”

->您必须返回一个整数,因为您的方法显示为“ public static int findTarget(int [] arr,int target)”。因此,如果您return -1是一个整数,则会编译它,因为-1是整数,而且如果您还返回y,因为您还为y分配了一个整数。

因此将findTarget()更改为以下内容:

public static int findTarget(int[] arr, int target)
{
    if (arr == null) {
        return -1;
    }

    int y = -1;
    for(int i = 0; i <= arr.length-1; i++) {
        if (target == arr[i]) {
            y = i;
        }
    }
    return y;
}

答案 3 :(得分:0)

这是解决方案。

public static void main(String[] args)
        {
            int[] numbers1 = {0,2,4,6,7,11,0};
            int[] numbers2 = {-7,5,9,10,5,0};
            System.out.println(findTarget(numbers1,5));
            System.out.println(findTarget(numbers1,0));
            System.out.println(findTarget(numbers2,5));
            System.out.println(findTarget(numbers1,-1));
        }
        public static int findTarget(int[] arr, int target)
        {
            int index = -1;
            if(null != arr) {
                for(int i=0;i<arr.length;i++) {
                    if(arr[i] == target) {
                        index = i;
                    }
                }
            }
            return index;
        }