删除和插入数组中的元素

时间:2014-10-22 18:18:09

标签: java arrays

public class Example {

    public static void main(String [] args) {

        String [] wombology;
        wombology = new String[3];
        wombology[0] = "History of Wombology";
        wombology[1] = "Why Wombology";
        wombology[2] = "Wombology and Me";


        Random book = new Random(System.currentTimeMillis());
        Scanner choice = new Scanner(System.in);
        String yourChoice;

        do {

            System.out.println("Press enter for random book");
            yourChoice = choice.nextLine();         

            if(yourChoice.equals("")) {

                System.out.println(wombology[randomizer.nextInt(3)]);
                System.out.println();

            }

            if(yourChoice == "EXIT") {

                break;

            }

        } while(!yourChoice.equals("EXIT"));
    }

}
  • 如果随机选择,我怎么能从阵列中取出一本“书”?

  • 我怎么能把以后的“书”放回到阵列中?

示例:“Wombology的历史”是随机选择并取出。

下一个随机选择不应包括“Wombology的历史”,直到它被放回去。

仅指“为什么选择Wombology”和“Wombology and Me”应该是唯一可能的选择。

3 个答案:

答案 0 :(得分:1)

我假设这是作业,ArrayList是不可能的。而且我不想给出完整,详细的答案。

一个选项可能是创建并行数组boolean isCheckedOut[],并在那里跟踪您的图书。

答案 1 :(得分:0)

您需要自己管理阵列。这意味着您需要知道数组的实际大小和填充大小。这是因为一旦创建了数组,大小就无法改变。

如果从阵列中删除对象,则需要将相邻元素移向该位置。

例如,您的数组如下所示:

[A|B|C|D|E|F]

allocatedArraySize = 6
currentSize = 6

如果您删除位于C的{​​{1}},则必须将2移至左侧。您也可以将最后一个位置设为null。

D, E, F

要插入,只需使用:

[A|B|D|E|F|null]

allocatedArraySize = 6
currentSize = 5

答案 2 :(得分:0)

您必须在技术层面上“定义”“取出书籍”的操作。我可以为这个

想出两种可能性
  • 将特定位置的数组内容设置为null
  • 将特定位置的数组内容设置为空字符串

由于大多数书籍的标题由一个或多个字母组成,空字符串提案似乎也是有效的。

第二个任务(将一本书放回到数组中)可以用类似的方式处理。在这里你必须找到一个空位(一个带有空字符串的数组位置/ null作为内容)并为其指定书名。

关于随机数发生器并且不允许已经删除的书籍:您可以使用上述条件重新运行随机数发生器,即直到在数组中找到非空字符串/非空元素。如果找到一个,这是一个有效的选择。但要注意,如果您删除了所有书籍,随机数发生器将永远不会停止运行(因为它只找到无效的选择,因此永远不会返回)。在这里你可以使用一个额外的检查条件:如果数组只包含空字符串/空值,则不需要运行随机数发生器。

希望有帮助...