与创建方法有关的分配

时间:2016-02-10 02:23:45

标签: java arrays

首先感谢您查看我的问题。我的任务对大多数人来说都很基础,但我是一个没有经验的程序员。以下是作业的说明:

您的目标是编写一个名为Storage的类,它可以包含一系列字符串。它必须实现以下方法:

  1. addItem(String s) - 此方法接受String参数并返回布尔值。然后,参数引用将在内部存储在您选择的结构中。如果成功添加引用,则该方法返回true。
  2. getItems() - 此方法不接受任何参数,并返回包含存储在内部结构中的所有字符串的数组。返回的数组不能包含任何null元素。
  3. isFull() - 如果没有可用的内部存储空间,则此方法返回true,否则返回false。
  4. removeItem(String s) - 此方法接受String参数并返回布尔值。该方法必须搜索内部存储结构并删除参数引用(如果存在)。如果成功删除了引用,则该方法返回true,否则返回false。
  5. 我对其中的大部分都感到非常难过。我使用数组来存储数据,但我对其他建议持开放态度。再次感谢。

    好吧我们做了一些更改,我开始编写一些代码,但是无法正确编译。基于对方法的描述,有人可以告诉我我做错了吗?

    public class Storage {

    //variables
    private String[] list;
    private int size = 10;
    private int index = 0;
    
    public boolean addItem(String s) {
        for (int i = 0; i < list.length; i++) {
            if (!list.equals(null)) {
                list[i] = s;
            }
        }
        return true;
    }
    
    public String[] getItems() {
        for (int i = 0; i < list.length; i++) {
            if(!list.equals(null)) {
            System.out.println(list[i]);
            i++;
            }
        }
        return list;
    }
    
    public boolean isFull() {
        if (list.length > size) {
            System.out.println("The array is full");
        }
        return true;
    }
    
    public boolean removeItem(String s) {
        for (int i = index; i < list.length - 1; i++) {
            list[i] = list[i + 1];
        }
        return true;
    }
    

    }

1 个答案:

答案 0 :(得分:0)

addItem(String s):该方法应返回一个布尔值,因为您使用的是ArrayList,我们可以使用add(Object o),它返回一个布尔值。

public boolean addItem(String s) {
    return list.add(s); // I'm assuming that your instance variable is named list
}

getItems():使用名为ArrayList的{​​{1}}类中的方法,传入要转换为的数组类型的参数。

toArray()

public String[] getItems() { return list.toArray(new String[list.size()]); } :不完全确定教师在这里要求的是什么,因为isFull()会自动调整大小,但你可以在你的类中添加一个包含最大大小的实例变量然后检查像这样反对......

ArrayList

当然,这意味着添加代码以检查您添加的元素是否违反了容量。我将在下面的完整示例中显示这一点。

public static final int SIZE = 10; ... public boolean isFull() { return list.size() >= SIZE; } removeItem(String s)中的remove()方法被重载以接受要删除的对象。同样,此方法也返回一个布尔值。

ArrayList

总而言之,你应该有类似以下内容......

public boolean removeValue(String s) {
    return list.remove(s); // Removes the first occurrence of the string
}