我正在尝试将Shoe类型的对象添加到Shoe类型的固定数组中,但我遇到了问题。
在addShoe方法中,我试图将shoe类型的引用添加到sh数组中,如下所示:sh.add(s);
当我试图运行它时,我收到此错误:
无法在数组类型Shoe []上调用add(Shoe) Eclipse建议我将其更改为“长度”并且不会产生敏感
我也在想我可以像这样写一个addShoes方法的其他部分:
public void addShoe(Shoe s) throws ShoeException
{
if(s.getId() < 0) {
throw new ShoeException(s);
}
else {
if(numShoes<=10){
sh = Arrays.add(s, numShoes);
numShoes++;
}
}
}
这只是其中一个想法。这是正确的方法吗?
public class TestShoe {
public static void main(String[] args) {
ShoeProcessor s = new Shoe();
Shoe s1 = new Shoe(7, "Black");
Shoe s2 = new Shoe(10, "Red");
try {
s.addShoe(s1);
s.addShoe(s2);
}catch(ShoeException bex){
System.out.println("Shoe Exception: " + bex);
}
}
}
public class ShoeProcessor
{
private Shoe [] sh;
private int numShoes=0;
private ShoeComparator<Shoe> sc;
public ShoeProcessor()
{
sh = new Shoe [10];
sc=new ShoeComparator<Shoe>();
}
public void addShoe(Shoe s) throws ShoeException
{
if(s.getId() < 0) {
throw new ShoeException(s);
}
else {
sh.add(s);
numShoes++;
}
}
}
public static void main(String[] args) {
ShoeProcessor s = new Shoe();
Shoe s1 = new Shoe(7, "Black");
Shoe s2 = new Shoe(10, "Red");
try {
s.addShoe(s1);
s.addShoe(s2);
}catch(ShoeException bex){
System.out.println("Shoe Exception: " + bex);
}
感谢您的帮助
我想补充说我需要使用固定大小的数组鞋。
我还想补充一点,我不想扩展数组sh。我可以添加最多10个类型为Shoe的引用。这就是为什么我还要计算添加的鞋子数量。
答案 0 :(得分:1)
Java中的数组具有固定的大小。您有两种选择:
切换为使用List
。当您向其添加更多项目时,这可以动态增长。要实施,您可以使用ArrayList
或LinkedList
。
每次需要添加时,请尝试使用System.arraycopy调整阵列大小。我不推荐这个。在内部,这实际上是ArrayList
所做的事情,但如果您愿意,可以手动执行此操作。
编辑:刚看到你的编辑。你可以这样做:
public void addToList(Shoe shoe) {
if(shoeList.size() < 10) {
shoeList.add(shoe);
}
}
shoeArrayCount = 0;
public void addToArray(Shoe shoe) {
if(shoeArrayCount < 10) {
shoeArray[shoeArrayCount] = shoe;
shoeArrayCount++;
}
}
取决于您选择使用哪种方法。
答案 1 :(得分:1)
可能我错过了一些东西:你想用sh.add(s);
替换sh[numShoes]= s;
吗?