把数组转换为list,调用remove方法进行删除
有一个有序整数数组,要求输入一个数字,在数组中查找是否有这个数,
如果有,将该数从数组中删除,要求删除后的数组仍然保持有序;
如果没有,则显示“数组中没有这个数!
本代码还包括了冒泡排序法。
List<Integer> list =new ArrayList<Integer>();使用此语句申明一个list;需要将a数组申明成Integer,才能进行赋值
for(int i=0;i<a.length;i++){
list.add(a[i]);
}
用此代码进行把a数组添加进list中
if(d==list.get(i)){
list.remove(i);
flag=true;}
在进行判断时,必须用list.get(i),不能用list.indexof();indexof用于截取list数组;此方法只能删除一个数,如果待删除的数组为 0 ,0,1,2,3。想要删除0,那么就只能删除一个0。这是因为remove方法删掉一个数字以后,会自动把后面的数字提上前来,也就是说,当第一个0被删除是,第二个0就充当了数组中第一个元素的位置,而for循环中的i已经变成1,所以删除不掉两个0。解决这个问题的办法是:申明一个空数组来存放。代码如下:
int b[]=new int[5];
int count=0;
int j=0;
for(int i=0;i<=a.length-1;i++)
{
if(d!=a[i]){
b[j]=a[i];
j++;
count++;
}
}
if(count!=0){
System.out.print("删除后的数组为:");
for(int i=0;i<=b.length-count;i++)
{
System.out.print(b[i]);
}
}else{
System.out.print("没有找到这个数字");
}
还可以用此方法遍历整个数组进行输出。
for(int i:list)
{
System.out.print(i);
}
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Sz_test8 {
public static void main(String[] args){
Integer a[]=new Integer[5];
boolean flag=true;
Scanner scan=new Scanner(System.in);
int c=0;
System.out.println("请输入一个数组:");
for(int i=0;i<5;i++)
{ a[i]=scan.nextInt(); }
for(int i=0;i<a.length;i++)
{ for(int j=0;j<a.length-i-1;j++)
{ if(a[j]>a[j+1])
{ c=a[j];
a[j]=a[j+1];
a[j+1]=c;
}
}
}
System.out.println("排序后的数组为:");
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+"\t");
}
Integer d;
System.out.println("请输入要删除的数字");
d=scan.nextInt();
List<Integer> list =new ArrayList<Integer>();
for(int i=0;i<a.length;i++)
{
list.add(a[i]);
}
for(int i=0;i<=list.size()-1;i++)
{
if(d==list.get(i))
{
list.remove(i);
flag=true;
break;
}else{
flag=false;
}
}
if(flag==true){
System.out.print("删除后的数组为:");
for(int i=0;i<=list.size()-1;i++)
{ System.out.print(list.get(i));
}
}else{
System.out.print("没有找到这个数字");
}
} }
原文:http://www.cnblogs.com/zwygogogo/p/4415609.html