gpt4 book ai didi

java - java删除数组中的元素

转载 作者:行者123 更新时间:2023-11-30 09:09:13 24 4
gpt4 key购买 nike

我创建了一个程序,用户可以在其中输入一个命令:向数组添加一个数字或从数组中删除一个元素或打印数组。数组大小为 10。

这是测试类,

   import java.util.Scanner;
public class Assignment7 {

public static void main (String [] args) {

Scanner scan = new Scanner (System.in);
final int MAX = 10;
Numbers nums = new Numbers(MAX);

char command;
int value;

System.out.println
("To add an element into the array, type a.");
System.out.println
("To delete an element from the array, type d.");
System.out.println
("To print the current contents of the array, type p.");
System.out.println
("To exit this program, type x.\n");
System.out.print
("Add (a), delete (d), print (p) or exit (x)?:");

command = scan.nextLine().charAt(0);
while (command != 'x') {
if (command == 'a' || command == 'd') {
System.out.print ("Enter a number: ");
value = scan.nextInt();
scan.nextLine();
if (command == 'a')nums.add(value);
else nums.delete(value);
}
else if (command == 'p') nums.print();
else System.out.println ("Not a value input");

System.out.print
("Add (a), delete (d), print (p) or exit (x)?: ");
command = scan.nextLine().charAt(0);
}
System.out.println ("Program Complete");
}
}

这是我的另一个类,

       import java.util.*;

public class Numbers{
private int[] nums;
private int size;

public Numbers(int _size){
this.nums = new int[_size];
}

public void add(int addnum){
if (size == nums.length)
{
System.out.println("Array is full. The value " +addnum + " cannot be added.");
}
else
{
nums[size] = addnum;
size += 1;
}

}

public void delete(int deleteNum){
if(search(deleteNum) == -1)
{
System.out.println("The value " + deleteNum + " was not found and cannot be deleted.");
}
else {
for (int i = nums[deleteNum]; i < nums.length -1; i++){
nums[i]= nums[i+1];
}
}
}

public void print(){
String output ="";
for(int str: nums){
output = output + " " + str;
}
System.out.println(output);

}

private int search(int x){
int index = 0;
while(index < size){
if(nums[index] == x)
return index;
index++;
}
return -1;
}
}

每次我运行程序并输入一个我想删除的数字时,它并没有被删除。它删除索引中的数字。

例如,如果数组输入是 1,2,3,4,5,6,7,8,9,10 并且我想删除数字 1,它会删除以下值在 1 的索引中,这将是数字 2 而不是数字 1。

最佳答案

我认为您的“设计”效率不高。因为在您的小程序中,您的数组大小在运行时会发生变化。您的删除方法也很“奇怪”。

为什么效率不高?

您正在使用具有固定大小的静态数组 -> 因此,如果您想“正确”从中删除项目,则需要使用 new (size - 1) 重新初始化新数组1 这是一个意大利面条式的代码操作。

什么是建议?

当您要删除或添加新项目时,使用可以动态更改其大小的动态数组怎么样?它还提供了直接的方法,如添加和删除来对其进行操作。

1您需要再次重新初始化静态数组(新大小 - 1),因为如果您要“删除”例如 2. 中的项目,它将仅分配给零所以整个数组看起来像:[ 1, 0, 3, 4, 5, 6, 7, 8, 9 ] 并且期望的目标是 [ 1, 3, 4, 5, 6, 7, 8, 9 ]

关于java - java删除数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23145059/

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