我需要一个简单的java程序,它可以为我生成一组自定义集,例如{' 1',' 2',' 3', ' 4'}。结果应该是: {' 1'&#39 2'},{' 2'&#39 3'},{' 3&#39 ;, ' 4'},{' 1'&#39 2'&#39 3'},{' 2',& #39; 3'' 4'}。
我已尝试过powerset的代码,但输出并不可取。如果代码可能是这样的话会很明显:
for(j=2;j<set.size()-1;j++)
{
for(i=0;i<set.size()-1;i++)
{
//a[i],a[i+1] when j=2
//a[i],a[i+1],a[i+2] when j=3
}
}
我知道.size()适用于ArrayList,而[i]适用于简单数组,并且我已经按照任何方法编写了!!提前致谢!! :)
答案 0 :(得分:1)
此代码应打印您想要的值:
final int[] values = {1, 2, 3, 4};
for (int size = 2; size < values.length; size++) {
for (int i = 0; i + size <= values.length; i++) {
for (int j = 0; j <= size - 1; j++) {
System.out.print(values[i + j]);
}
System.out.println();
}
}
从示例中,我们看到您要打印长度大于1且小于总计集的值集,以便以下行代码:
for (int size = 2; size < values.length; size++) {
之后我们计算子集的起始索引,注意不要遇到IndexArrayOutOfBounds异常(参见下面的行)
for (int i = 0; i + size <= values.length; i++) {
从那里我们只打印从i index开始的值和子集长度
for (int j = 0; j <= size - 1; j++)
答案 1 :(得分:0)
这是生成所需结果的示例代码:
int[] array = { 1, 2, 3, 4 };
int size = 2;
for (int j = 0; j < array.length; j++) {
for (int i = 0; i <= array.length - size; i++) {
int[] temp = Arrays.copyOfRange(array, i, i + size);
for (int x : temp) {
System.out.print(x + ",");
}
System.out.println();
}
size++;
if (size == array.length) {
break;
}
}
输出:
1,2,
2,3,
3,4,
1,2,3,
2,3,4,