这是我目前的情况:
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,它是实验室的第一部分)
答案 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));