Java 将引用对象添加到固定数组
我试图将类型Shoe的对象添加到类型Shoe的固定数组中,但我遇到了一个问题 在addShoe方法中,我试图向sh数组添加Shoe类型的引用,如下所示:sh.add(s) 当我尝试运行它时,出现以下错误: 无法对数组类型Shoe[]调用add(Shoe) Eclipse建议我将其更改为“length”,但它没有意义 我还想我可以写addShoes方法的另一部分,如下所示: } }Java 将引用对象添加到固定数组,java,arrays,Java,Arrays,我试图将类型Shoe的对象添加到类型Shoe的固定数组中,但我遇到了一个问题 在addShoe方法中,我试图向sh数组添加Shoe类型的引用,如下所示:sh.add(s) 当我尝试运行它时,出现以下错误: 无法对数组类型Shoe[]调用add(Shoe) Eclipse建议我将其更改为“length”,但它没有意义 我还想我可以写addShoes方法的另一部分,如下所示: } } public类鞋处理器 { 私家鞋[]上海; 私有整数numShoes=0; 私人鞋匠sc; 公共鞋匠() { s
public类鞋处理器
{
私家鞋[]上海;
私有整数numShoes=0;
私人鞋匠sc;
公共鞋匠()
{
sh=新鞋[10];
sc=新鞋类压缩机();
}
公共无效添加鞋(鞋)抛出鞋例外
{
如果(s.getId()<0){
抛出新的鞋例外;
}
否则{
sh.add(s);
numShoes++;
}
}
}
谢谢你的帮助
我想补充一点,我需要使用固定尺寸的阵列鞋
我还想补充一点,我不想扩展数组sh。我最多可以添加10个Shoe类型的引用。这就是为什么我还要计算添加的鞋的数量 Java中的数组具有固定大小。您有两个选择:
- 切换到使用
。当您向其中添加更多项目时,它会动态增长。对于实现,您可以使用列表
或ArrayList
LinkedList
- 每次需要添加阵列时,请尝试使用调整阵列大小。我不推荐这个。在内部,这实际上是
所做的事情,但是如果您选择手动执行,您可以自由地执行ArrayList
public void addToList(鞋){
如果(鞋类列表大小()<10){
鞋匠。添加(鞋);
}
}
ShoarrayCount=0;
公共空间附加阵列(鞋){
如果(ShoarRayCount<10){
Shoearlay[ShoearlayCount]=鞋;
ShoarRayCount++;
}
}
取决于您选择的输入方法。可能我遗漏了一些内容:是否要替换
sh.add代码>带有sh[numShoes]=s代码>?你不能那样做。相反,使用ArrayList
+1@SLaks。数组的大小是固定的:如果您想动态扩展它们,您必须创建一个大小为+1的新数组,或者使用arraylist/vector等。这正是我的问题。我很难将类型Shoe的引用对象添加到类型Shoe的数组中。这就是为什么我写了两个不同的选项和我尝试过的一切。这很简单,我忘了。非常感谢。
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 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++;
}
}