如何使用arrayList排序和操作值

Posted

技术标签:

【中文标题】如何使用arrayList排序和操作值【英文标题】:How to use arrayList sort and manipulate the vlaue 【发布时间】:2021-11-04 21:42:53 【问题描述】:

通过使用 Java 11,我试图在 ArrayList 中找到平均值。我要开发的算法是((列表内的值/最大值)* 100)/列表长度)。运行程序时出现数字格式运行时错误。 java.lang.NumberFormatException 是我得到的错误。

import java.io.*;
import java.util.*;

public class Main
    public static void main(String[] args)throws IOException
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine()," ");
        double[] grades = new double[N];
        
        for(int i = 0; i < N; i++)
            grades[i] = Integer.parseInt(st.nextToken());
        
        
        double sum = 0;
        Arrays.sort(grades);
        
        for(int i = 0; i < grades.length; i++)
            sum += (grades[i]/grades[grades.length-1])*100;
        
        System.out.println(sum/grades.length);
       
    

enter image description here

【问题讨论】:

Please do not upload images of code/errors when asking a question. 相反,edit 您的问题并在此处添加代码。 接下来,请提供完整的异常堆栈跟踪以及您的问题。这将帮助人们更好更快地帮助您。见How to Ask。 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。 【参考方案1】:

我发现上面的代码有两个问题:

    br.readLine()int 的解析是抛出NumberFormatException 的行,因为br.readLine() 包含数字和空格(至少)。由于该行不是有效数字,因此解析失败。

    例子:

    执行br.readLine()时用户输入以下内容:“1 2 3 4” 下一条指令如下所示:int N = Integer.parseInt("1 2 3 4") 正确的数字不应包含空格:“1234”

    这不是一个真正的错误,但是,您要求用户在 br.readLine 第二次出现时再次输入数字:new StringTokenizer(br.readLine()," ");

解决方案

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

// REMOVE NEXT LINE
// int N = Integer.parseInt(br.readLine());

StringTokenizer st = new StringTokenizer(br.readLine()," ");

// Read the number of tokens in the string
// The input "1 2 3 4" on the example above should return 4 tokens
int N = st.countTokens();

double[] grades = new double[N];

【讨论】:

以上是关于如何使用arrayList排序和操作值的主要内容,如果未能解决你的问题,请参考以下文章

如何按字典顺序对 ArrayList 进行排序?

如何使用多个排序标准对 ArrayList 进行排序?

如何在Java中对HashMap进行排序[重复]

在Java中按属性值对对象ArrayList进行排序

如何按前缀整数值对 ArrayList<String> 进行排序[重复]

如何使用比较器对 ArrayList 进行排序? [复制]