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