0

这是我目前的情况:

import java.util.ArrayList;
import java.util.Scanner;

import com.sun.xml.internal.ws.api.pipe.NextAction;

import static java.lang.System.*;

public class NumberAnalyzer
{
private ArrayList<Number> list;

public NumberAnalyzer()
{

}

public NumberAnalyzer(String numbers)
{
    String nums = numbers;
    Scanner chopper = new Scanner(nums);
    while(chopper.hasNext()){
        int num = chopper.nextInt();
        list.add(num);
    }
    list = 
}

我将如何转换一串数字,比如说5 12 9 6 1 4 8 6,并将它们添加到ArrayList<Number>我拥有的这个中?Eclipse 声明

ArrayList 类型中的方法 add(int, Number) 不适用于参数 (int)。

编辑 这里是所有相关 .java 文件的 pastebin 链接:

http://pastebin.com/9KDXLwbL (NumberAnalyzer.java)

http://pastebin.com/BGRpbpyH (Number.java)

http://pastebin.com/EhmZ6kKH (跑步班)

http://pastebin.com/BCzeZytg(NumberTester.java 这个与 Number.java 配合得很好,它是实验室的一部分)

4

3 回答 3

1

问题是你有另一个类Number。以这种方式更改您的代码:

import java.util.ArrayList;
import java.util.Scanner;

public class NumberAnalyzer {

    private ArrayList<Number> list;

    public NumberAnalyzer() {
    }

    public NumberAnalyzer(String numbers) {
        list = new ArrayList<Number>();
        String nums = numbers;
        Scanner chopper = new Scanner(nums);
        while (chopper.hasNext()) {
            list.add(new Number(chopper.nextInt()));
        }
        chopper.close();
    }

}

通过这种方式,您正在使用您的 class Number,而不是默认的。

于 2013-01-10T01:05:59.353 回答
1

Number显然,您在当前包中有自己的类。

因此,您的ArrayList<Number>不包含java.lang.Number,而是完全包含另一种类型。因此,您不能添加一个int;编译器无法将 a 转换为自定义类int的实例。Number

相反,您需要显式创建您的Number类的实例,或者摆脱它并使用java.lang.Number. (它int有一个隐式转换)

于 2013-01-10T00:55:55.440 回答
0

如果要使用参数化方法,请使用 Integer 作为参数,同时将其添加到 Integer。

private ArrayList<Integer> list = new ArrayList<Integer>();
list.add(Integer.valueOf(num));

如果您不想使用参数化方法,只需将其作为 int 添加到列表中。

private ArrayList list = new ArrayList();
list.add(Integer.parseInt(num));
于 2013-01-10T00:55:26.403 回答