【问题标题】:Adding double array values to an arraylist using a for loop使用 for 循环将双数组值添加到数组列表
【发布时间】:2014-03-13 23:53:50
【问题描述】:

如果我在问这个问题时犯了任何错误,我提前道歉。我是 stackoverflow 和 java 的新手。

我的问题是我希望能够将普通的双精度数组转换为 arraylist,我需要明智地操作这个 arraylist 元素以将值从 x 更改为 -x(使用接口)

我试图首先使用 for 循环元素将数组双精度转换为数组列表(我认为我应该首先工作)但 .add 似乎不起作用,这是似乎出现的解决方案当我研究它时。目前它说“无法实例化类型 Num”我尝试删除抽象仍然没有好处。

我这样做完全错了吗?提前感谢您的帮助。

这是我的代码。

public interface Num {
    public void neg(); // negation
    public void sqrt(); // square root 
    public String asString(); // number represented as a string
}

public class NumDouble implements Num {

    Double d;
    public NumDouble(Double d) {
        this.d = d;
    }

    @Override
    public void neg() {
        d = -d;
    }

    @Override
    public void sqrt() {
        d = Math.sqrt(d);
    }

    @Override
    public String asString() {
        return d.toString();
    }

}

这是我一直在尝试的代码

import java.util.ArrayList;
import java.util.Arrays;

public abstract class NumList implements Num {

    ArrayList<Num> nums = new ArrayList<Num>();
    double[] doubles = {2.3, 2.2, 2.4};

    public void neg() {
        for (int i = 0; i < doubles.length; i++) {
            double value = doubles[i];
            nums.add(new Num(value));    <------this is highlighting as an error
        }
        return;
    }

    public void sqrt() {

    }
}

【问题讨论】:

  • 应该是new NumDouble(value) -- 你不能实例化接口
  • 他实际上可以创建一个接口的匿名实例。
  • 非常感谢您的帮助,一个问题解决了哈哈!

标签: java arraylist


【解决方案1】:

您可以使用NumDouble 来执行此操作,也可以创建Num 的匿名实例。

后者看起来像这样:

Num num = new  Num() {

        Double d;

        @Override
        public void neg() {
            d = -d;
        }

        @Override
        public void sqrt() {
            d = Math.sqrt(d);
        }

        @Override
        public String asString() {
            return d.toString();
        }

    };

正如您所见,这没有意义,因为您无法将构造函数添加到匿名实例,并且您的接口不包含 setter。

请注意:NumList 并不是真正的 Num,因为它不适合您创建的 Num 抽象。

所以我的建议是像这样使用NumDouble

nums.add(new NumDouble(value));

或创建一个扩展 Num 的新类。

【讨论】:

    猜你喜欢
    • 2020-10-22
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-23
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    相关资源
    最近更新 更多