在帖中看到了一个这样的问题.如int[] Source={1,2,2,3,3,3,4,4,4,4,5,5,5,5,5},消除其中的重复元素.
我是这样想的.再利用一个Destination数组,先把Source中的第一个元素1给Destination,然后判断第二个元素跟Destination中的前面元素是不是相等,相等的话,i加1,然后用同样的方法.代码如下:但是可能存在一些错误.请帮我找出,我怎么也找不出来了.声明,就用我说的这种方法,其他方法不用.
class Test
{
public static void main(String[] args)
{
int[] Source={1,2,2,3,3,3,4,4,4,4,5,5,5,5,5};
int[] Destination=new int[20];
Destination[0]=Source[0];
int i=1,j=1;
while(i<15)
{
int k;
for(k=0;k<j;k++)
{
if(Source[i]==Destination[k])
{
i++;
k=-1;
}
}
Destination[j]=Source[i];
i++;
j++;
}
for(int m=0;m<Destination.length;m++)
System.out.println(Destination[m]);
}
}
我是这样想的.再利用一个Destination数组,先把Source中的第一个元素1给Destination,然后判断第二个元素跟Destination中的前面元素是不是相等,相等的话,i加1,然后用同样的方法.代码如下:但是可能存在一些错误.请帮我找出,我怎么也找不出来了.声明,就用我说的这种方法,其他方法不用.
class Test
{
public static void main(String[] args)
{
int[] Source={1,2,2,3,3,3,4,4,4,4,5,5,5,5,5};
int[] Destination=new int[20];
Destination[0]=Source[0];
int i=1,j=1;
while(i<15)
{
int k;
for(k=0;k<j;k++)
{
if(Source[i]==Destination[k])
{
i++;
k=-1;
}
}
Destination[j]=Source[i];
i++;
j++;
}
for(int m=0;m<Destination.length;m++)
System.out.println(Destination[m]);
}
}
{
public static void main(String[] args)
{
int[] Source={1,2,2,3,3,3,4,4,4,4,5,5,5,5,5};
int[] Destination=new int[20];
Destination[0]=Source[0];
int i=1,j=1,k=0;
while(i <15)
{
if (Source[i]==Destination[k])
i++;
else{
Destination[j]=Source[i];
k=j;
i++;
j++;
}
}
for(int m=0;m <j;m++)
System.out.println(Destination[m]);
}
}
输出的for循环,我将Destination.length改成了j,是为了避免输出若干个0.
在这个情况下,i的值会不停的增加。当它增加到15的时候,Source[15]已经下标越界了,所以。 for(k=0;k <j;k++) <-- 无限循环
{
if(Source[i]==Destination[k])
{
i++;
k=-1;
}
}
只是这样的设计不太合理。
放到 map完成。。呵呵
{
int[] Source={1,2,2,3,3,3,4,4,4,4,5,5,5,5,5};
int[] Destination=new int[Source.length];
for(int i=0;i<Source.length-1;i++) {
if(Source[i]<Source[i+1]) {
Destination[i]=Source[i];
//System.out.println(Destination[i]);
}
}
Destination[Destination.length-1]=Source[Source.length-1];
for(int i=0;i<Destination.length;i++) {
System.out.println(Destination[i]);
}
}
}
import java.util.List;class TT { public static void main(String[] args)
{
int[] Source={1,2,2,3,3,3,4,4,4,4,5,5,5,5,5}; List<Integer> L=new ArrayList<Integer>();
for(int i=0;i<Source.length-1;i++) {
if(Source[i]<Source[i+1]) {
L.add(Source[i]);
}
}
L.add(Source[Source.length-1]);
for(int i=0;i<L.size();i++) {
System.out.println(L.get(i));
}
}
}
public class Test {
public static void main(String[] args) {
int[] Source={1,2,2,3,3,3,4,4,4,4,5,5,5,5,5};
int[] Destination = new int[20];
Destination[0]=Source[0];
int i = 1, j = 0;
while(i<Source.length){
if(Source[i]==Destination[j]){
i++;
}else{
j++;
Destination[j] = Source[i];
i++;
}
}
for(int m = 0; m<j+1;m++){
System.out.print(Destination[m]+" ");
}
}
}
这个for(k=0; k <j; k++)实际上是个无限循环
public static void main(String[] args)
{
int[] Source = {1,2,2,3,3,3,4,4,4,4,5,5,5,5,5};
int[] Destination = new int[20];
Destination[0]=Source[0];
int i = 0, k = 0, j = 1;
boolean flag;
while(i < Source.length)
{
flag = true;
for(k = 0; k < j && i < Source.length; k ++)
{
if(Source[i]== Destination[k])
{
flag = false;
i ++ ;
break;
}
}
if(flag){
Destination[j] = Source[i];
i++;
j++;
}
}
for(int m=0;m <Destination.length;m++)
System.out.print(Destination[m] + ";");
}
比如Source={1,2,3,2,3,3,4,4,4,4,5,5,5,5,5}
import java.util.*;
public class D
{ public static void main(String[] args)
{
List l=new ArrayList();
int[] Source={1,2,2,3,3,66,6,6,4,4,4,4,5,5,5,5,5};
for(int i=0;i<Source.length;i++)
{
if(!l.contains(Source[i]))
l.add(Source[i]);
}
for(int i=0;i<l.size();i++)
{
System.out.println(l.get(i));
}
}}