删除数组中某一项并输出删除后的数组

方法一:

package delete;
import java.util.Scanner;
public class delete {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int[] num = new int[]{3,6,9,13};
System.out.print("请输入要删除的数:");
int number = input.nextInt();
boolean isFind =false;
int i;
for (i = 0; i < num.length; i++) {
if(number==num[i]){
isFind=true;
break;//找到了
}

}
if(isFind){
System.out.println("数组中有要删除的数字"+number+",在数组num的第"+(i+1)+"项,下标为"+i);
int[] nums=new int[num.length-1];//后续操作
if(i==num.length-1){
for (int j = 0; j < nums.length; j++) {
nums[j]=num[j];
}
}
else{
for (int j2 = i; j2 < num.length-1; j2++) {
num[j2]=num[j2+1];
}
for (int k = 0; k < nums.length; k++) {
nums[k]=num[k];
}
}
for (int j = 0; j < nums.length; j++) {
System.out.print(nums[j]+"\t");
}
}
else{
System.out.print("数组num中没有要删除的数"+number);//没找到
}
}
}

方法二:

package Delete;
import java.util.Scanner;
public class AnotherMethod {
public static void main(String[] args){
Scanner input=new Scanner(System.in);
int[] num={3,6,9,12,15};
System.out.println("请输入您要删除的数:");
int number =input.nextInt();
boolean isFind =false;
int i;
for (i = 0; i < num.length; i++) {
if(number==num[i]){
isFind=true;
break;
//找到了要删除的数
}
}
if(isFind){
System.out.println("您输入的要删除的数"+number+",在数组num的第"+(i+1)+"项,下标为"+i);
int[] nums=new int[num.length-1];
for (int j = 0; j < nums.length; j++) {
nums[j]=num[j];
if(j==i){
nums[j]=num[j+1];
i++;
}
}
for (int k = 0; k < nums.length; k++) {
System.out.print(nums[k]+"\t");
}
}
else{
System.out.println("您输入的数在数组num中不存在,无法删除");//没找到要删除的数
}
input.close();
}
}

总结:删除数组中某一项并输出删除后的数组这个问题需要考虑到数组的定长性,不能用集合删除某一项的方法。删除数组中某一项,分为几步:

1.输入要删除的项;

2.遍历数组查找是否存在要删除的项;

3.方法一分两种情况①:要删除的项是最后一项,将原数组中的每一项依次赋值给新数组然后输出;②:要删除的项不是最后一项,从要删除的那一项开始将后面的项依次赋值给该数组的前一项,然后把赋值后的数组每一项赋值给新数组并输出。

方法二将删除后的数组直接赋值给新数组中的每一项并输出,省去了方法一中情况②的步骤。方法二的思路是先依次赋值给新数组,等到遇到要删除的那一项通过之前找到的下标将后一项赋值给新数组的前一项就可以了,省去了代码的数量。

第一种方法思路直接容易想到,第二种方法稍微有点绕但能减少代码数量,提高执行效率。

转载于:https://www.cnblogs.com/java1765415329/p/6623292.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值