Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中将数组元素组合成成对_Java - Fatal编程技术网

在Java中将数组元素组合成成对

在Java中将数组元素组合成成对,java,Java,我在做这个练习,这里给出了带有自然数(整数)的数组T[N]。我需要构建一个程序,在屏幕上显示表T中所有可能的元素对。该程序必须包含一个函数(方法)。例如T=(1,2,3,4),可能的对是(1,2),(1,3),(1,4),(2,3),(2,4),(3,4) 这是我到目前为止所做的代码,但它并没有显示所有的对,只有第一对。有人能帮我找出哪里错了吗?我应该补充什么 public static void main(String[] args) { Scanner in = new Scanne

我在做这个练习,这里给出了带有自然数(整数)的数组T[N]。我需要构建一个程序,在屏幕上显示表T中所有可能的元素对。该程序必须包含一个函数(方法)。例如T=(1,2,3,4),可能的对是(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)

这是我到目前为止所做的代码,但它并没有显示所有的对,只有第一对。有人能帮我找出哪里错了吗?我应该补充什么

public static void main(String[] args) {
    Scanner in = new Scanner (System.in);
    
    System.out.print("Give the number of elements of the array: ");
    int N = in.nextInt();
    
    int [] T = new int [N];
    
    System.out.println("Please give " + N + " elements: ");

    for (int i = 0; i < T.length; i++)
        T[i] = in.nextInt();
        
    System.out.println("The array is = " + Arrays.toString(T));

    pairs(T);
}

public static void pairs (int [] T) {
    int nr = 0;
    for (int i=0; i<T.length-1; i++) {
        System.out.println(T[i] + "," + T[i+1]);
    nr++;
    }
    
} 
publicstaticvoidmain(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
System.out.print(“给出数组的元素数:”);
int N=in.nextInt();
int[]T=新的int[N];
System.out.println(“请给出“+N+”元素:”);
对于(int i=0;i对于(inti=0;i,您需要从源代码列表中获取唯一的元素对

public static <T> List<Pair<T, T>> getUniquePair(final List<T> source) {
    int[] count = new int[1];
    return source.stream()
            .peek((s) -> count[0]++)
            .flatMap(
                    inSource -> source.stream()
                            .skip(count[0])
                            .map(innSource -> Pair.of(inSource, innSource))
            )
            .filter(pair -> notEqual(pair.getFirst(), pair.getSecond()))
            .collect(toList());
} 
公共静态列表getUniquePair(最终列表源){
int[]计数=新的int[1];
返回source.stream()
.peek((s)->计数[0]++)
.平面图(
inSource->source.stream()
.skip(计数[0])
.map(innSource->Pair.of(inSource,innSource))
)
.filter(pair->notEqual(pair.getFirst(),pair.getSecond())
.collect(toList());
} 

这应该使用嵌套循环完成:

静态无效打印对(int…arr){
对于(int i=0;i
输出:

1, 2
1, 3
1, 4
2, 3
2, 4
3, 4

Henri Koka您的代码有一个简单的逻辑缺陷。在方法
void pairs(int[]T)
中:

我将分享另一种理解为什么我们使用两个循环的方法。在这段代码中,我们必须找到对

输入:(1,2,3,4)

输出:(1,2)、(1,3)、(1,4)、(2,3)、(2,4)、(3,4)

你所做的是打印(T[0],T[0+1]),(T[1],T[1+1])

我们真正需要的是(T[0],T[1]),(T[0],T[2]),。。。。 然后(T[1],T[2]),(T[1],T[3]),等等

(x,y)的x部分只有在完成以下所有y时才会增加


我希望我已经帮了你。

糟糕的标题。单击«编辑»链接,重写以总结你的具体技术问题。完成Basil,很抱歉我是新加入你的循环,你只在索引
I
I+1
处对元素进行配对。因此,对于数组
T
,元素0和1配对;然后是1和2,依此类推。这很有效!感谢你的帮助:’)解释得很详细,非常感谢!
public static void pairs (int [] T)
{
    int nr = 0;
    
    for (int i=0; i<T.length-1; i++)
    {
        System.out.println(T[i] + "," + T[i+1]);
        nr++;
    }
}
public static void pairs (int [] T)
{
    int nr = 0;
    
    for (int i = 0;i < T.length-1;i++)
    {
        for (int j = i+1;j < T.length;j++)
        {
            System.out.println(T[i] + "," + T[j]);
            nr++;
        }
    }
}