ArrayList <number>是什么意思?</number>

时间:2013-01-10 00:45:46

标签: java list arraylist

这是我目前的情况:

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,它是实验室的第一部分)

3 个答案:

答案 0 :(得分:1)

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

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

相反,您需要显式创建Number类的实例,或者删除它并使用java.lang.Number。 (int隐式转换为<)

答案 1 :(得分: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();
    }

}

通过这种方式,您使用的是课程Number,而不是默认课程。

答案 2 :(得分: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));