本帖最后由 熵增 于 2018-10-9 15:05 编辑
day05 课后习题的第十题“数组去重”的主要思想是需要将循环与判断语句结合使用。
技术路线在图片中,代码如下。
public class Text10_1 {
public static void main(String[] args) {
int [] num={9,10,6,6,1,9,0,3,5,6,4,4,100,10,110};
System.out.println("原数组:");
System.out.print("[");
for(int i=0;i<num.length;i++)
{
if(i<num.length-1)
{
System.out.print(num+",");
}else System.out.println(num+"]");
}
//建立新的中间数组mid[num.length],记录num[]中出现重复的值的位置。
int [] mid=new int[num.length];
for(int i=0;i<num.length-1;i++)
{
for(int j=i+1;j<num.length;j++)
if(num==num[j]) //在num[]数组中,如果下标i位置处的值和下标j处的值相同,
{ // 则在mid[j]处计作1,这样在mid[]数组中值为1的元素的下标就是num[]出现重复值的下标
mid[j]=1;
}
}
//建立新数组newNum[lengthNum],将num[]中不重复的值赋给它midTwo[]。
int lengthNum=0;
for(int i=0;i<num.length;i++)
{
if(mid==0){++lengthNum;} //确定lengthNum的数值即新数组newNum[]的长度
}
int [] newNum=new int[lengthNum];
for(int j=0,i=0;i<num.length;i++) //通过mid[]的重复值位置信息,将num[]剔除重复值赋值给newNum[]
{
if(mid!=1)
{
newNum [j]=num;
j++;
}
}
System.out.println("跳过重复值打印:");
for(int i=0;i<num.length;i++)
{
if(mid!=1)System.out.print(num+" "); //跳过num[]中的重复值打印
}
System.out.println();
System.out.println("=========================================");
System.out.println("剔除重复值后的新数组:");
System.out.print("[");
for(int i=0;i<lengthNum;i++)
{
if(i<lengthNum-1)
{
System.out.print(newNum+","); //打印剔除重复值后的newnum[]数组
}else System.out.println(newNum+"]");
}
}
}
|
|