gpt4 book ai didi

java - Java 中的 IntegerList 帮助

转载 作者:太空宇宙 更新时间:2023-11-04 13:48:11 25 4
gpt4 key购买 nike

所以在类里面我们遵循实验室手册的说明。我能够完成第一步和第二步,我只需要第三步的帮助。

<小时/>

实验室手册说明:

  • 向 IntegerList 类添加一个方法 void removeFirst(int newVal),用于从列表中删除第一次出现的值。如果该值没有出现在列表中,则它不应该执行任何操作(但这不是错误)。删除一个项目不应改变数组的大小,但请注意,数组值确实需要保持连续,因此当您删除一个值时,您必须将其后面的所有内容向下移动以填充其空间。还要记住减少跟踪元素数量的变量。
  • 向 IntegerListTest 中的菜单添加一个选项来测试您的新方法。

    <小时/>

    整数列表

    public class IntegerList
    {
    private int count;
    private double totalInt;
    int[] list; //values in the list
    //-------------------------------------------------------
    //create a list of the given size
    //-------------------------------------------------------

    void addElement(int newVal)
    {
    if (count == list.length)
    increaseSize();

    list[count] = newVal;
    count++;
    }

    void removeFirst(int newVal2)
    {
    for (int i = 0; i < list.length-1; i++)
    {
    if (newVal2 == list[i])
    {
    list[list.length] = (Integer) null;
    list[i] = list [i-1];
    }
    }

    }

    public IntegerList(int size)



    {
    list = new int[size];
    count = 0;

    }

    public void randomize()
    {
    for (int i=0; i<list.length; i++)
    {
    list[i] = (int)(Math.random() * 100) + 1;
    count++;
    }

    }
    public void print()
    {
    for (int i=0; i<count; i++)
    System.out.println(i + ":\t" + list[i]);
    }




    private void increaseSize()
    {
    int[] temp = new int[list.length * 2];

    for (int lst = 0; lst < list.length; lst++)
    temp[lst] = list[lst];

    list = temp;
    }
    }

    整数列表测试

    import java.util.Scanner;
    public class IntegerListTest
    {
    static IntegerList list = new IntegerList(10);
    static Scanner scan = new Scanner(System.in);

    public static void main(String[] args)
    {
    printMenu();
    int choice = scan.nextInt();
    while (choice != 0)
    {
    dispatch(choice);
    printMenu();
    choice = scan.nextInt();
    }
    }

    公共(public)静态无效调度(int选择) {

    int loc;
    switch(choice)
    {
    case 0:
    System.out.println("Bye! ") ;
    break;
    case 1:
    System.out.println("How big should the list be?");
    int size = scan.nextInt();
    list = new IntegerList(size);
    list.randomize();
    break;
    case 2:
    list.print();
    break;
    case 3:
    System.out.println("What number would you like to add?");
    int newVal = scan.nextInt();
    list.addElement(newVal);
    break;
    case 4:
    System.out.println("What number do you want to remove? (Removes first occurance.)");
    int newVal2 = scan.nextInt();
    list.removeFirst(newVal2);
    default:
    System.out.println("Sorry, invalid choice");
    }
    }


    public static void printMenu()
    {
    System.out.println("\n Menu ");
    System.out.println(" ====");
    System.out.println("0: Quit");
    System.out.println("1: Create a new list (** do this first!! **)");
    System.out.println("2: Print the list");
    System.out.println("3: Add to the list");
    System.out.println("4: Remove Integer");
    System.out.print("\nEnter your choice: ");
    }
    }
    <小时/>

    非常感谢任何帮助。如果您也能解释一下原因,那就太好了,这样我就可以从中学习。谢谢! :D

    最佳答案

    因此您可以循环数组来查找与给定值匹配的第一个元素。如果找到,则将其位置保存到索引并将其后面的所有元素移动一位:

    void removeFirst(int newVal2) {
    int index = -1;
    for (int i = 0; i < count; i++) {
    if (index == -1 && newVal2 == list[i]) {
    // element found - save index
    index = i;
    }
    if (index != -1) {
    // this code handles after found case
    if (i == count-1) {
    // zero-out last element
    list[i] = 0;
    count--;
    }
    else {
    // shift value
    list[i] = list[i+1];
    }
    }
    }
    }

    关于java - Java 中的 IntegerList 帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30607601/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com