Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Arrays_Data Structures - Fatal编程技术网

Java 嵌套用于循环和特定数组元素搜索

Java 嵌套用于循环和特定数组元素搜索,java,arrays,data-structures,Java,Arrays,Data Structures,我有一个关于如何查看这些生成的数组的方法和过程的问题。 基本上我想创建一个[a,b,c,(a+b+c)]的数组,以及第二个[d,e,f,(d+e+f)]数组,如果数组1和数组2中的第三个元素相同,则将数组显示为字符串 int num = 10; for(int a = 0; a < num; a++){ for(int b = 0; b < num; b++){ for(int c = 0; c < num; c++){ if(a<=b

我有一个关于如何查看这些生成的数组的方法和过程的问题。 基本上我想创建一个[a,b,c,(a+b+c)]的数组,以及第二个[d,e,f,(d+e+f)]数组,如果数组1和数组2中的第三个元素相同,则将数组显示为字符串

int num = 10;
for(int a = 0; a < num; a++){
   for(int b = 0; b < num; b++){
      for(int c = 0; c < num; c++){
         if(a<=b && b<=c){
           arrayOne[0] = a;
           arrayOne[1] = b;
           arrayOne[2] = c;
           arrayOne[3] = (a+b+c);
         }
      }
   }
}

for(int d = 0; d < num; e++){
   for(int e = 0; e < num; e++){
      for(int f = 0; f < num; f++){
         if(d<=e && e<=f){
           arrayTwo[0] = d;
           arrayTwo[1] = e;
           arrayTwo[2] = f;
           arrayTwo[3] = (f -(d+e));
         }
      }
   }
}
int num=10;
for(int a=0;a如果(a如果我正确理解了你的问题,如果
a=1,b=3,c=4
d=2,e=3,f=3
你想按照
1+3+4=8=2+3+3
的思路打印一些内容。首先,你现在正在做的是创建两个数组,如评论中所述。你想做的是将所有值存储在一个数组中f数组,如下所示:

int max; \\ To determine the value of max see the edit below.
int array[][] = new int[max][num];
int index = 0;
for (int a=0; a < num; a++) {
    for (int b=a; b < num; b++) {
        for (int c=b; c < num; c++) {
            array[index][0] = a;
            array[index][1] = b;
            array[index][2] = c;
            array[index][3] = a + b + c;
            index++;
        }
    }
}

for (int i = 0; i < max; i++) {
    for (int j = i; j < max; j++) {
        if (array[i][3] == array[j][3]) {
            string outString = array[i][0] + " + " + array[i][1] + " + " + array[i][2] + " = " + array[i][3] + " = " + array[j][0] + " + " + array[j][1] + " + " + array[i][2];
            System.out.println(outString);
        }
    }
}
递归地应用方程式,直到得到答案。例如,如果num为5:

A_5,3 = A_4,3 + A_5,2
      = A_3,3 + A_4,2 + A_4,2 + A_5,1
      = A_3,3 + 2(A_4,2) + 5
      = A_2,3 + A_3,2 + 2(A_3,2) + 2(A_4,1) + 5
      = A_2,3 + 3(A_3,2) + 2(4) + 5
      = A_1,3 + A_2,2 + 3(A_2,2) + 3(A_3,1) + 2(4) + 5
      = 1 + 4(A_2,2) + 3(3) + 2(4) + 5
      = 1 + 4(A_1,2) + 4(A_2,1) + 3(3) + 2(4) + 5
      = 1 + 4(1) + 4(2) + 3(3) + 2(4) + 5
      = 5(1) + 4(2) + 3(3) + 2(4) + 5
看起来这可能会简化为
(num+(num-1)(2)+(num-2)(3)+…+(2)(num-1)+num)
,这是
二项式的(num,num)
,但我还没有做确定的工作;
int givenNumber = 10;
int []arrayOne = new int [4]; 
int []arrayTwo = new int [4];
int count = 0;

for ( int i = 0; i < givenNumber; i ++)
{    
    for ( int x = 0; x < givenNumber; x ++ )
    {
        for ( int a = 0; a < givenNumber; a++ ){
            arrayOne[0] = (int)(a * java.lang.Math.random() + x);
            arrayOne[1] = (int)(a * java.lang.Math.random() + x);
            arrayOne[2] = (int)(a * java.lang.Math.random() + x);
            arrayOne[3] = (int)(arrayOne[0]+arrayOne[1]+arrayOne[2]);
        }

        for ( int b = 0; b < givenNumber; b++ ){
            arrayTwo[0] = (int)(b * java.lang.Math.random() + x);
            arrayTwo[1] = (int)(b * java.lang.Math.random() + x);
            arrayTwo[2] = (int)(b * java.lang.Math.random() + x);
            arrayTwo[3] = (int)(arrayTwo[0]+arrayTwo[1]+arrayTwo[2]);
        }


        if (arrayOne[3] == arrayTwo[3])
        {
            for ( int a = 0; a < 2; a++ )
            {
                System.out.print(arrayOne[a] + " + ");
            }   System.out.print(arrayOne[2] + " = " + arrayOne[3] + " = ");

            for ( int a = 0; a < 2; a++ )
            {
                System.out.print(arrayTwo[a] + " + ");
            }   System.out.print(arrayTwo[2]);      

            System.out.println("\n");
            count += 1;
        }   
    }

}
        if (count == 0)
            System.out.println(
                "\nOops! you dont have a match...\n" +
                    "Please try running the program again.\n");
int[]arrayOne=新int[4]; int[]arrayTwo=新int[4]; 整数计数=0; for(int i=0;i
你能给出一个你想要数组看起来像什么的例子吗?现在看起来你有两个长度为4的数组,你只是在不使用它们的情况下重复重写这些值。现在你正在独立地循环你的
a,b,c
,然后循环
d,e,f
。在第一次嵌套时<代码>对于完成,您有
[num,num,num,3*num]
作为数组。原则上,第二个循环的每次迭代都会生成与第一个循环的相应迭代相同的数据,嵌套循环将以相同的值退出。不确定您想要实现什么?我正在尝试在各自不同的运行时创建两个数组,最后我要扫描所有数组我通过查看arrayOne和arrayTwo是否在每个数组的第三个元素中具有相同的和生成,然后显示受尊重的数组。您需要将第一组数组存储在某个位置。我建议使用相同的“第三个元素”存储数组(我猜您实际上指的是索引为3的元素)一起。例如,您可以使用列表数组。我知道字符串串联有点混乱。如果您愿意,您可以将其更改为其他内容。第二个
for
循环中的
if条件
应该包含
=
而不是
=
,我想,虽然从未测试过,但这仍然是赋值,当y你需要比较两个值:-)+1表示其余的值,尽管这个问题对我来说仍然有点不清楚。谢谢@nIcEcOw!我根据你的更正做了更改:)好的,这似乎有效,但我想更改数学运算。arrayOne[3]=(long)math.pow(a,5)+(long)math.pow(b,5)+(long)math.pow(c,5)arrayTwo[3]=(long)math.pow(f,5)-((long)Math.pow(d,5)+(long)Math.pow(e,5));
int givenNumber = 10;
int []arrayOne = new int [4]; 
int []arrayTwo = new int [4];
int count = 0;

for ( int i = 0; i < givenNumber; i ++)
{    
    for ( int x = 0; x < givenNumber; x ++ )
    {
        for ( int a = 0; a < givenNumber; a++ ){
            arrayOne[0] = (int)(a * java.lang.Math.random() + x);
            arrayOne[1] = (int)(a * java.lang.Math.random() + x);
            arrayOne[2] = (int)(a * java.lang.Math.random() + x);
            arrayOne[3] = (int)(arrayOne[0]+arrayOne[1]+arrayOne[2]);
        }

        for ( int b = 0; b < givenNumber; b++ ){
            arrayTwo[0] = (int)(b * java.lang.Math.random() + x);
            arrayTwo[1] = (int)(b * java.lang.Math.random() + x);
            arrayTwo[2] = (int)(b * java.lang.Math.random() + x);
            arrayTwo[3] = (int)(arrayTwo[0]+arrayTwo[1]+arrayTwo[2]);
        }


        if (arrayOne[3] == arrayTwo[3])
        {
            for ( int a = 0; a < 2; a++ )
            {
                System.out.print(arrayOne[a] + " + ");
            }   System.out.print(arrayOne[2] + " = " + arrayOne[3] + " = ");

            for ( int a = 0; a < 2; a++ )
            {
                System.out.print(arrayTwo[a] + " + ");
            }   System.out.print(arrayTwo[2]);      

            System.out.println("\n");
            count += 1;
        }   
    }

}
        if (count == 0)
            System.out.println(
                "\nOops! you dont have a match...\n" +
                    "Please try running the program again.\n");