线程“main”中的异常 java.lang.IndexOutOfBoundsException:

马纳萨赛

该程序使用方法来:

  1. 获取用于计算平均值的数字,

  2. 在计算之前获取要删除的最低数字的数量

  3. 得到权重,一个大于 0 且小于等于 1 的双精度值,

  4. 计算用户输入的数字(除最低n个数字外)的加权平均值,以及

  5. 打印结果。

第一个方法应该没有参数并返回一个双精度数组列表。

第二种方法应该不带任何参数并返回一个整数,即在计算平均值之前要删除的最低数字的数量。

第三种方法应该不带参数并返回双精度值(权重)

第四个方法应该接受三个参数:一个数字数组列表(上面第一个方法的返回值);一个整数(在计算平均值之前要删除的最小项目数);和双(重量)。此方法应返回双精度值(除最低 n 值之外的所有数字的加权平均值)。

第五个方法应该有四个参数:一个数字数组列表(上面第一个方法的返回值);一个整数(在计算平均值之前要删除的最小数字的数量);双倍(重量);和一个 double(从上面的第四种方法返回的加权平均值)。这个方法应该没有返回值。

例如:

如果用户给出这些数字来计算平均值:

40 60 80 100 20

并且用户给出数字 2 以指示在计算平均值之前应该删除多少个最低值,并给出 0.5 的权重,那么程序应该给出作为输出:

数字的加权平均值为 40.0,当使用数据 40.0、60.0、80.0、100.0、20.0 时,其中 0.5 是使用的权重,平均值是在去掉最低的 2 个值后计算的。

import java.util.*;
import java.lang.*;
import java.util.ArrayList;
import java.util.Collections;


public class MyClass 
{
    public static ArrayList<Double> getALInfo() 
    {
        Scanner in=new Scanner(System.in);
        ArrayList<Double> inputs = new ArrayList<>();
        System.out.println("Please enter 5 - 10 integers, Q to quit: ");

        String [] tokens = in.nextLine().split("\\s");

        for (int i = 0; i < tokens.length; i++)
            inputs.add(Double.parseDouble(tokens[i]));

        return inputs;
    }   

    public static int getLowestnum() 
    {        
        int lowNum = 0;
        System.out.println("How many of the lowest values should be dropped? ");
        Scanner in = new Scanner(System.in);
        lowNum = in.nextInt();

        return lowNum;

    }
    public static double weight() 
    {
        Scanner in = new Scanner(System.in);
        System.out.println("Enter the weight: ");
        double weight = in.nextDouble();

        return weight;
    }

    public static double calculateAvg(ArrayList<Double> inputs,double weight, int lowNum) 
    {
        double sum = 0;
        double average = 0;                

        Collections.sort(inputs);
        ArrayList<Double> inputs1 = new ArrayList<Double>(inputs.subList(lowNum, inputs.size()+1));

        for (int i = 0; i < inputs1.size(); i++) 
        {
            if (inputs1.get(i) > lowNum) 
            {
                sum = sum + inputs.get(i);
            }
        }
        sum=weight*sum;
        average = (sum / inputs1.size());

       return average;
    }

    public static void getAvg(ArrayList<Double> inputs,int n,double weight, double average) 
    {

        System.out.println("The weighted average of the numbers is " + average + ", when using the data " + inputs + " where " +weight+ " is the weight used, and the average is computed after dropping the lowest " +n+" values");  
    }

    public static void main(String args[]) 
    {
        int lowNum = 0;  
        double average; 
        double weight=0;
        ArrayList<Double> inputs= getALInfo();
        lowNum = getLowestnum();
        weight=weight();
        average = calculateAvg(inputs,weight, lowNum);
        getAvg(inputs, lowNum,weight, average);
    }
}

程序运行良好,您输入重量后,它会显示数组越界异常错误。你能指出我哪里出错了。

阿兹罗

错误来自 new ArrayList<Double>(inputs.subList(lowNum, inputs.size()+1))

因为你试图到达,作为结束索引,最后一个元素+1所以它不存在


解决 :

new ArrayList<Double>(inputs.subList(lowNum, inputs.size()))

!! 另外,你for loop错了

  • 不需要检查这个奇怪的如果
  • 你没有从正确的列表中选择:使用更好的名字
for (int i = 0; i < inputs1.size(); i++) {
    if (inputs1.get(i) > lowNum) {
        sum = sum + inputs.get(i);
    }
}

解决

ArrayList<Double> subList = new ArrayList<>(inputs.subList(lowNum, inputs.size()));
for (int i = 0; i < subList.size(); i++) {           
    sum = sum + inputs.get(i);            
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

线程“main”中的kotlin异常java.lang.IndexOutOfBoundsException

来自分类Dev

“线程1” java.lang.IndexOutOfBoundsException

来自分类Dev

线程“主”中的异常java.lang.IndexOutOfBoundsException:索引:10,大小:10

来自分类Dev

线程“主”中的异常java.lang.IndexOutOfBoundsException:索引:15,大小:5

来自分类Dev

线程“主”中的异常java.lang.IndexOutOfBoundsException:索引:0,大小:0

来自分类Dev

线程“主”中的异常java.lang.IndexOutOfBoundsException:索引:3,大小:2

来自分类Dev

java错误:线程“ main”中的异常java.lang.NoClassDefFoundError

来自分类Dev

Hbase示例,线程“ main”中的异常java.lang.NoClassDefFoundError

来自分类Dev

错误:线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException

来自分类Dev

线程“main”中的异常 - java.lang.NoClassDefFoundError

来自分类Dev

线程“main”中的 NetBeans 异常 java.lang.NoClassDefFoundError

来自分类Dev

线程“主”中发生异常java.lang.IndexOutOfBoundsException:无组1

来自分类Dev

如何在Selenium WebDriver中清除java.lang.IndexOutOfBoundsException

来自分类Dev

Java :(错误)Main.main中的线程“ main”中的异常java.lang.NullPointerException(Main.java:14)

来自分类Dev

转换为MYSQL时Java中的线程“ main”中的异常java.lang.NullPointerException

来自分类Dev

为什么我在递归 java 方法中收到“线程“main”java.lang.StackOverflowError 中的“异常”?

来自分类Dev

线程“main”中的异常java.lang.NumberFormatException:对于输入字符串:Java中的“”

来自分类Dev

线程“主”中的异常java.lang.NoClassDefFoundError:Main $ 1 Java?

来自分类Dev

如何删除java.lang.IndexOutOfBoundsException?

来自分类Dev

打开NetBeans时java.lang.IndexOutOfBoundsException

来自分类Dev

java.lang.IndexOutOfBoundsException错误Bukkit插件

来自分类Dev

事件java.lang.IndexOutOfBoundsException的断点

来自分类Dev

Android服务java.lang.IndexOutOfBoundsException

来自分类Dev

java.lang.IndexOutOfBoundsException: 使用 try, catch

来自分类Dev

Android java.lang.IndexOutOfBoundsException 错误

来自分类Dev

Scala Akka Microkernel中的线程“ main”中的异常java.lang.InstantiationException

来自分类Dev

ssj-2.5.jar库中的线程“ main”中的异常java.lang.NoClassDefFoundError

来自分类Dev

仅 ubuntu 中的线程“main”java.lang.NoSuchMethodError 中的异常

来自分类Dev

ArrayList Java中的IndexOutOfBoundsException

Related 相关文章

  1. 1

    线程“main”中的kotlin异常java.lang.IndexOutOfBoundsException

  2. 2

    “线程1” java.lang.IndexOutOfBoundsException

  3. 3

    线程“主”中的异常java.lang.IndexOutOfBoundsException:索引:10,大小:10

  4. 4

    线程“主”中的异常java.lang.IndexOutOfBoundsException:索引:15,大小:5

  5. 5

    线程“主”中的异常java.lang.IndexOutOfBoundsException:索引:0,大小:0

  6. 6

    线程“主”中的异常java.lang.IndexOutOfBoundsException:索引:3,大小:2

  7. 7

    java错误:线程“ main”中的异常java.lang.NoClassDefFoundError

  8. 8

    Hbase示例,线程“ main”中的异常java.lang.NoClassDefFoundError

  9. 9

    错误:线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException

  10. 10

    线程“main”中的异常 - java.lang.NoClassDefFoundError

  11. 11

    线程“main”中的 NetBeans 异常 java.lang.NoClassDefFoundError

  12. 12

    线程“主”中发生异常java.lang.IndexOutOfBoundsException:无组1

  13. 13

    如何在Selenium WebDriver中清除java.lang.IndexOutOfBoundsException

  14. 14

    Java :(错误)Main.main中的线程“ main”中的异常java.lang.NullPointerException(Main.java:14)

  15. 15

    转换为MYSQL时Java中的线程“ main”中的异常java.lang.NullPointerException

  16. 16

    为什么我在递归 java 方法中收到“线程“main”java.lang.StackOverflowError 中的“异常”?

  17. 17

    线程“main”中的异常java.lang.NumberFormatException:对于输入字符串:Java中的“”

  18. 18

    线程“主”中的异常java.lang.NoClassDefFoundError:Main $ 1 Java?

  19. 19

    如何删除java.lang.IndexOutOfBoundsException?

  20. 20

    打开NetBeans时java.lang.IndexOutOfBoundsException

  21. 21

    java.lang.IndexOutOfBoundsException错误Bukkit插件

  22. 22

    事件java.lang.IndexOutOfBoundsException的断点

  23. 23

    Android服务java.lang.IndexOutOfBoundsException

  24. 24

    java.lang.IndexOutOfBoundsException: 使用 try, catch

  25. 25

    Android java.lang.IndexOutOfBoundsException 错误

  26. 26

    Scala Akka Microkernel中的线程“ main”中的异常java.lang.InstantiationException

  27. 27

    ssj-2.5.jar库中的线程“ main”中的异常java.lang.NoClassDefFoundError

  28. 28

    仅 ubuntu 中的线程“main”java.lang.NoSuchMethodError 中的异常

  29. 29

    ArrayList Java中的IndexOutOfBoundsException

热门标签

归档