java - 找到数组中最接近的值并将其删除

标签 java collections

我已经搜索了几个具有确切问题的类似线程,但是我无法使代码正常工作,我想找到数组中最接近的值然后将其删除,这是我的代码:

import java.util.ArrayList;
import java.util.Scanner;
public class Entertrain {
    public static void main(String[] args) {
        Scanner console = new Scanner(System.in);
        System.out.println("Power: ");
        int power = Integer.parseInt(console.nextLine());
        ArrayList<Integer> weight = new ArrayList<>();
        int averageWagon = 0;
        int sum = 0;

        while (console.hasNextInt()) {
            weight.add(console.nextInt());

        }

        for (int i = 0; i < weight.size(); i++)
            sum += weight.get(i);

        if (sum > power) {
            averageWagon = sum / weight.size();
            //Here I want to find the closest value to averageWagon

        }
        System.out.println(averageWagon);

        System.out.println(weight);
        System.out.println(power);
        System.out.println(sum);

    }
}

如果可以指导我找到解决方案,我已经尝试了几个小时,最后得出的结论是我严重缺乏数组知识,所以无论如何我都会把它放在一边现在重点关注数组,但如果您在这方面获得帮助,我将不胜感激。

最佳答案

你要找的不是数组,而是集合。您正在使用 ArrayList,它实现了 List。

public static void main(String[] args) {

    Scanner console = new Scanner(System.in);
    System.out.println("Power: ");
    int power = Integer.parseInt(console.nextLine());
    ArrayList<Integer> weight = new ArrayList<>();
    int averageWagon = 0;
    int sum = 0;

    while (console.hasNextInt()) {
        weight.add(console.nextInt());
    }

    for (int i = 0; i < weight.size(); i++)
        sum += weight.get(i);

    if (sum > power) {
        averageWagon = sum / weight.size();

        Integer closest = weight.get(0);
        for (Integer i: weight) {
             if (Math.abs(averageWagon - closest) > Math.abs(averageWagon - i))
                 closest = i;
        }
        weight.remove(closest);
    }
    System.out.println(averageWagon);

    System.out.println(weight);
    System.out.println(power);
    System.out.println(sum);
}

关于java - 找到数组中最接近的值并将其删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47126900/

相关文章:

java - 为什么这个md5不匹配

Python 集合 ValuesView abc : why doesn't it inherit from Iterable?

java - 是否可以在 hashmap 中存储线程对象?

java - Quartz JobDataMap 不适用于非原始类型

Java 矩阵乘法产生相同的矩阵

java - 使用 driver.quit() 并行运行 Appium 测试时会导致其他测试失败

java - 使用 GWT 检查是否离线

java - HashMap 中的 void 类作为 Value 对象

javascript - 编译为 Javascript 时使用 Java Standard Library for Kotlin

java - Java为HashSet中的ConcurrentModificationException提供的类是什么?