如何修复此运行时错误?“线程中的异常”;“主要”;java.lang.ArrayIndexOutOfBoundsException:-1 import java.util.Scanner//导入扫描仪以获取用户输入 公共类阵列帮助器 { 公共静态void main(字符串[]args) { 扫描仪输入=新扫描仪(System.in); int[]hello=新int[10]; for(int i=0;i

如何修复此运行时错误?“线程中的异常”;“主要”;java.lang.ArrayIndexOutOfBoundsException:-1 import java.util.Scanner//导入扫描仪以获取用户输入 公共类阵列帮助器 { 公共静态void main(字符串[]args) { 扫描仪输入=新扫描仪(System.in); int[]hello=新int[10]; for(int i=0;i,java,arrays,runtime,java.util.scanner,indexoutofboundsexception,Java,Arrays,Runtime,Java.util.scanner,Indexoutofboundsexception,这是一个程序,它接受用户输入以获得10个整数来创建一个数组。我已经完成了所有的程序,并且没有编译时错误,但是当我运行代码时,display方法中出现了一个索引越界(-1)问题,我已经尽了一切努力来修复它。谢谢大家! 您似乎忘记了创建contains方法 以下是方法: import java.util.Scanner; //importing scanner to get user input public class ArrayHelper { public static void

这是一个程序,它接受用户输入以获得10个整数来创建一个数组。我已经完成了所有的程序,并且没有编译时错误,但是当我运行代码时,display方法中出现了一个索引越界(-1)问题,我已经尽了一切努力来修复它。谢谢大家!

您似乎忘记了创建contains方法

以下是方法:

import java.util.Scanner;  //importing scanner to get user input

public class ArrayHelper
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        int[] hello = new int[10];
        for(int i = 0; i < 10; i++) //to get right number of integers
        {
            System.out.print("Please enter an integer: ");
            hello[i] = input.nextInt();
        }
//printing everything out 
        display(hello);
        System.out.println();
        System.out.print("Evens: ");
        display(onlyEvens(hello));
        System.out.println();
        System.out.print("Positives: ");
        display(onlyPositives(hello));
        System.out.println();
        System.out.print("Odds: ");
        display(disjoint(hello ,onlyEvens(hello)));
        System.out.println();
        System.out.print("Negatives: ");
        display(disjoint(hello ,onlyPositives(hello)));
        System.out.println();
    }

    public static void display(int[] nums)
    {
        for(int i = 0; i < nums.length -1; i++)
            System.out.print(nums[i] + ", ");

        System.out.print(nums[nums.length - 1]); //!!!!!!this is where the error occurs
    }
    public static int[] onlyEvens(int[] nums) //only even numbers in array (anything divisible by 2 including 0)
    {
        int x = 0;  //for set length
        for(int i = 0; i < nums.length; i++)
            if (nums[i]%2 == 0) //checks if even
                x++;

        int[] y = new int[x];
        int z = 0;

        for(int i = 0; i < nums.length; i++)
            if (nums[i]%2 == 0) //checks if even
            {
                y[z] = nums[i];
                z++;
            }
        return y;
    }
    public static int[] onlyPositives(int[] nums) //looking for only positive integers in array
    {
        int x = 0;  //sets set length
        for(int i = 0; i < nums.length; i++)
            if (nums[i] > -1)   //checks if positive
                x++;

        int[] y = new int[x];
        int z = 0;

        for(int i = 0; i < nums.length; i++)
            if (nums[i] > -1)   //checks if positive
            {
                y[z] = nums[i];
                z++;
            }

        return y;
    }

    public static int[] disjoint(int[] nums, int[] nums2)
    {
        int x = 0;

        for(int i = 0; i < nums.length; i++)
        {
            int j = nums[i];
            if(!contains(nums2 , j))    //checks if letter be there
                x++;
        }

        for(int i = 0; i < nums2.length; i++)
        {
            int j = nums2[i];   //checks if letter be there
            if(!contains(nums , j))
                x++;
        }

        int[] y = new int[x];
        int z = 0;

        for(int i = 0; i < nums.length; i++)
        {
            int j = nums[i];    //checks if letter be there
            if(!contains(nums2 , j))
            {
                y[z] = nums[i];
                z++;
            }
        }

        for(int i = 0; i < nums2.length; i++)
        {
            int j = nums2[i];   //checks if letter be there
            if(!contains(nums , j))
            {
                y[z] = nums2[i];
                z++;
            }
        }
        return y;
    }
}
在这里,您的整个代码都经过了测试,而且似乎正在运行:

private static boolean contains(int[] nums, int j) {
        return false;
    }
import java.util.Scanner//导入扫描仪以获取用户输入
公共类离场{
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(System.in);
int[]hello=新int[10];
for(int i=0;i<10;i++)//获取正确数量的整数
{
System.out.print(“请输入一个整数:”);
hello[i]=input.nextInt();
}
//打印所有内容
显示(你好);
System.out.println();
系统输出打印(“Evens:”);
显示(仅限Yevens(hello));
System.out.println();
系统输出打印(“正片:”);
显示(仅限正态(hello));
System.out.println();
系统输出打印(“赔率:”);
显示(不相交(hello,仅限evens(hello));
System.out.println();
系统输出打印(“底片:”);
显示(不相交(hello,仅限正(hello));
System.out.println();
}
公共静态无效显示(int[]nums)
{
对于(int i=0;i-1)//检查是否为正
import java.util.Scanner;  //importing scanner to get user input

public class OutOfBound {

        public static void main(String[] args)
        {
            Scanner input = new Scanner(System.in);
            int[] hello = new int[10];
            for(int i = 0; i < 10; i++) //to get right number of integers
            {
                System.out.print("Please enter an integer: ");
                hello[i] = input.nextInt();
            }
    //printing everything out 
            display(hello);
            System.out.println();
            System.out.print("Evens: ");
            display(onlyEvens(hello));
            System.out.println();
            System.out.print("Positives: ");
            display(onlyPositives(hello));
            System.out.println();
            System.out.print("Odds: ");
            display(disjoint(hello ,onlyEvens(hello)));
            System.out.println();
            System.out.print("Negatives: ");
            display(disjoint(hello ,onlyPositives(hello)));
            System.out.println();
        }

        public static void display(int[] nums)
        {
            for(int i = 0; i < nums.length -1; i++)
                System.out.print(nums[i] + ", ");

            System.out.print(nums[nums.length - 1]); //!!!!!!this is where the error occurs
        }
        public static int[] onlyEvens(int[] nums) //only even numbers in array (anything divisible by 2 including 0)
        {
            int x = 0;  //for set length
            for(int i = 0; i < nums.length; i++)
                if (nums[i]%2 == 0) //checks if even
                    x++;

            int[] y = new int[x];
            int z = 0;

            for(int i = 0; i < nums.length; i++)
                if (nums[i]%2 == 0) //checks if even
                {
                    y[z] = nums[i];
                    z++;
                }
            return y;
        }
        public static int[] onlyPositives(int[] nums) //looking for only positive integers in array
        {
            int x = 0;  //sets set length
            for(int i = 0; i < nums.length; i++)
                if (nums[i] > -1)   //checks if positive
                    x++;

            int[] y = new int[x];
            int z = 0;

            for(int i = 0; i < nums.length; i++)
                if (nums[i] > -1)   //checks if positive
                {
                    y[z] = nums[i];
                    z++;
                }

            return y;
        }

        public static int[] disjoint(int[] nums, int[] nums2)
        {

            int x = 0;

            for(int i = 0; i < nums.length; i++)
            {
                int j = nums[i];
                if(!contains(nums2 , j))    //checks if letter be there
                    x++;
            }

            for(int i = 0; i < nums2.length; i++)
            {
                int j = nums2[i];   //checks if letter be there
                if(!contains(nums , j))
                    x++;
            }

            int[] y = new int[x];
            int z = 0;

            for(int i = 0; i < nums.length; i++)
            {
                int j = nums[i];    //checks if letter be there
                if(!contains(nums2 , j))
                {
                    y[z] = nums[i];
                    z++;
                }
            }

            for(int i = 0; i < nums2.length; i++)
            {
                int j = nums2[i];   //checks if letter be there
                if(!contains(nums , j))
                {
                    y[z] = nums2[i];
                    z++;
                }
            }
            return y;
        }

        private static boolean contains(int[] nums, int j) {
            return false;
        }
    }
public static void display(int[] nums)
{
    for(int i = 0; i < nums.length; i++)
        System.out.print(nums[i] + ", ");
}