Java 修复主线程中的异常

Java 修复主线程中的异常,java,Java,只要布尔方法返回true,我的代码中的所有内容似乎都正常工作。但是,当尝试测试false时,在用户输入10个数字后,我收到以下错误: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9 at FunArrays.main(FunArrays.java:15 我的代码遗漏了什么或忽略了什么 这是我的密码: import java.util.Scanner; public class FunArrays {

只要布尔方法返回true,我的代码中的所有内容似乎都正常工作。但是,当尝试测试false时,在用户输入10个数字后,我收到以下错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9
at FunArrays.main(FunArrays.java:15
我的代码遗漏了什么或忽略了什么

这是我的密码:

import java.util.Scanner;

public class FunArrays {

public static void main(String[] args) {
        Scanner input = new Scanner (System.in);

        System.out.println("Please enter ten numbers....");

            int [] userArray = new int [9];

        for(int b = 0; b < 10 ; b++){
            userArray [b] = input.nextInt();
        }

            boolean lucky = isLucky(userArray);
                if (lucky){
                        sum(userArray);
    } else
        sumOfEvens(userArray);

}



public static boolean isLucky(int [] numbers){

    for (int i = 0; i <= numbers.length; i++){
        if (numbers[i]== 7 || numbers[i] == 13 || numbers[i] == 18){
            return true;

        }   

    }
    return false;

}



public static void sum(int [] numbers){
    int sum = 0;
    for (int x = 0; x <= numbers.length -1; x++){
        sum += numbers[x];

    }
    System.out.println(sum);
}

public static void sumOfEvens(int [] numbers){
    int evens = 0;
    for (int y = 0; y <= numbers.length -1; y++){
        if (numbers[y] % 2 == 0){
            evens += numbers[y];
        }
    }
    System.out.println(evens);
}

}
import java.util.Scanner;
公共类数组{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
System.out.println(“请输入十个数字…”);
int[]userArray=newint[9];
对于(int b=0;b<10;b++){
userArray[b]=input.nextInt();
}
布尔lucky=isLucky(userArray);
如果(幸运的话){
和(用户数组);
}否则
sumOfEvens(用户数组);
}
公共静态布尔值(int[]数字){

对于(int i=0;i您正在输入10个数字,但您的数组只有9个点。将其更改为

int [] userArray = new int [10];
int[]userArray=newint[9];
对于(int b=0;b<10;b++){
userArray[b]=input.nextInt();
}
数组大小为9(从索引0到索引8),循环增量b从0到9(10个案例) 在这种情况下,循环中的b应该小于9

因此,您可以用以下代码替换:

int maxInput = 9;
int [] userArray = new int [maxInput];

    for(int b = 0; b < maxInput ; b++){
        userArray [b] = input.nextInt();
    }
intmaxinput=9;
int[]userArray=newint[maxInput];
对于(int b=0;b
您应该声明一个大小为10的数组,因为您正在接受来自用户的10个值

int [] userArray = new int [9];

下面是一篇关于数组的好文章:

您试图在长度为9的数组中存储10个数字


使用
int[]userArray=new int[10];

usersArray的长度是9(0…8)-但是你的循环是从0到9运行的。因此,当b是9时,你就在数组的边界之外。你正在创建一个包含9个元素的数组。请记住数组是
0索引的
。这是每个程序员都会遇到的难题之一。:)当我纠正这些问题时,我收到以下错误消息:线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:10在FunArrays.isLucky(FunArrays.java:32)在FunArrays.main(FunArrays.java:18)现在布尔方法出现了一个问题,只有当它为false时才出现。当我纠正这些问题时,我收到以下错误消息:线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:10在FunArrays.isLucky(FunArrays.java:32)在FunArrays.main(FunArrays.java:18)现在布尔方法出现了一个问题,只有当它为false时才出现。这似乎是一个很好的练习:)您需要理解我们的答案,以修复“isLucky”函数的“for”结束条件……以及“sum”和“sumofens”函数的结束条件。
int [] userArray = new int [9];