Java 如何检查数组是否有两对不同的匹配值?

Java 如何检查数组是否有两对不同的匹配值?,java,arrays,Java,Arrays,如果该方法可以找到两对不同的匹配int值,则应该返回true。因此,如果数组是{2,2,4,7,7},它应该返回true,因为它有两个2s和两个7s 但它仅适用于不同的对值。如果它是{2,2,2,2,5},它将返回false,因为它们不是不同的对值 编辑:这是我到目前为止对方法主体的了解: public static boolean hasTwoPair(int[] arrayOfInts){ } boolean pairFound=false; int对值; for(int s=0;

如果该方法可以找到两对不同的匹配
int
值,则应该返回true。因此,如果数组是
{2,2,4,7,7}
,它应该返回true,因为它有两个2s和两个7s

但它仅适用于不同的对值。如果它是
{2,2,2,2,5}
,它将返回false,因为它们不是不同的对值

编辑:这是我到目前为止对方法主体的了解:

public static boolean hasTwoPair(int[] arrayOfInts){    
}
boolean pairFound=false;
int对值;
for(int s=0;s

我不知道接下来该怎么办

由于您实际上没有尝试过任何代码,我将介绍如何解决此问题,但没有实际的代码

从初始化为
false
boolean
pairFound
开始,当您找到第一对
时,更改为
true
。此外,还需要一个
int
pairValue
)来跟踪找到的第一对值(如果找到了)

遍历,寻找一对。如果找到一对,而
pairFound
为false,则将
pairFound
设置为
true
,并将
pairValue
设置为第一个找到的
对的值。现在继续遍历

如果您找到一对且
pairFound
true
且该对为
!=pairValue
,则
返回true;
。如果您遍历所有内容,但尚未返回
true
,则可以
返回false


根据你最新的问题,你已经很接近了

     boolean pairFound = false;
    int pairValue;

    for(int s = 0; s < arrayOfInts.length - 1; s++){
        pairValue = arrayOfInts[s];

        for(int c = s + 1; c < arrayOfInts.length; c++){
            if(pairValue == arrayOfInts[c])
                pairFound = true;
        }
    }

    return false; //placeholder
boolean pairFound=false;
int pairValue=Integer.MIN\u值;
//或者ArrayFints基于上下文永远不会拥有的某些值
for(int s=0;s
由于您实际上没有尝试过任何代码,我将介绍如何解决此问题,但没有实际的代码

从初始化为
false
boolean
pairFound
开始,当您找到第一对
时,更改为
true
。此外,您还需要一个
int
pairValue
)来跟踪找到的第一对值(如果您找到了)

遍历,寻找一对。如果找到一对,而
pairFound
为false,则将
pairFound
设置为
true
,并将
pairValue
设置为第一个找到的
对的值。现在继续遍历

如果您找到一对且
pairFound
true
且该对为
!=pairValue
,则
返回true;
。如果您遍历所有内容,但尚未返回
true
,则可以
返回false


根据你最新的问题,你已经很接近了

     boolean pairFound = false;
    int pairValue;

    for(int s = 0; s < arrayOfInts.length - 1; s++){
        pairValue = arrayOfInts[s];

        for(int c = s + 1; c < arrayOfInts.length; c++){
            if(pairValue == arrayOfInts[c])
                pairFound = true;
        }
    }

    return false; //placeholder
boolean pairFound=false;
int pairValue=Integer.MIN\u值;
//或者ArrayFints基于上下文永远不会拥有的某些值
for(int s=0;s
由于您实际上没有尝试过任何代码,我将介绍如何解决此问题,但没有实际的代码

从初始化为
false
boolean
pairFound
开始,当您找到第一对
时,更改为
true
。此外,您还需要一个
int
pairValue
)来跟踪找到的第一对值(如果您找到了)

遍历,寻找一对。如果找到一对,而
pairFound
为false,则将
pairFound
设置为
true
,并将
pairValue
设置为第一个找到的
对的值。现在继续遍历

如果您找到一对且
pairFound
true
且该对为
!=pairValue
,则
返回true;
。如果您遍历所有内容,但尚未返回
true
,则可以
返回false


根据你最新的问题,你已经很接近了

     boolean pairFound = false;
    int pairValue;

    for(int s = 0; s < arrayOfInts.length - 1; s++){
        pairValue = arrayOfInts[s];

        for(int c = s + 1; c < arrayOfInts.length; c++){
            if(pairValue == arrayOfInts[c])
                pairFound = true;
        }
    }

    return false; //placeholder
boolean pairFound=false;
int pairValue=Integer.MIN\u值;
//或者ArrayFints基于上下文永远不会拥有的某些值
for(int s=0;s
由于您实际上还没有尝试过任何代码,我将
V   #
-   -
2 - 4
5 - 1
public static boolean hasTwoPair(Iterable<E> iterable)
public static <T> boolean hasTwoPair(T[] array)