制作一个仅显示特定值的选定值数组

时间:2018-10-15 16:30:58

标签: java arrays for-loop

我试图弄清楚如何打印出基于我的第一个数组的第二个数组,但是仅显示大于其左侧值且小于其右侧值的值,并通过以下方式显示这些值它们在原始数组中的那一行。到目前为止,这是我的代码。

public static void main(String[] args)

{
       int row, col, i, j;
       int arr[][] = new int[10][10];
       Scanner scan = new Scanner(System.in);


       row = 3;
       col = 6;

       // enter array elements.
       for(i=0; i<row; i++)
       {
           for(j=0; j<col; j++)
           {
               System.out.println("Enter a value: ");
               arr[i][j] = scan.nextInt();
           }
       }

       // the 2D array is here.
       System.out.print("Matrix Display :\n");
       for(i=0; i<row; i++)
       {
           for(j=0; j<col; j++)
           {
               System.out.print(arr[i][j]+ "  ");
           }
           System.out.println();


       }

       System.out.println(arr[0]);
       System.out.println(arr[1]);
       System.out.println(arr[2]);
       System.out.println(arr[3]);

   }



}

1 个答案:

答案 0 :(得分:0)

您将不知道有多少元素适合您的条件,因此您需要使用可变对象。由于每一行的匹配数可能不同,因此您通常无法在没有空值的情况下创建普通数组。

使用2D ArrayList,扫描原始2D数组,然后将符合条件的值添加到ArrayList的相应行中。

您可以执行以下操作:

int width = arr[0].length-1;
ArrayList<ArrayList<Integer>> listoflists= new ArrayList<ArrayList<Integer>>();


// Scan array for matching values
for(i=0; i<row; i++)
{
    for(j=0; j<col; j++)
    {
        listoflists.add(new ArrayList<Integer>());
        if(j==0 && arr[i][0]<arr[i][1])
            listoflist.get(i).add(arr[i][0]);
        else if(j==width && arr[i][width]>arr[i][width-1]
            listoflist.get(i).add(arr[i][width]);
        else if( #this is the last condition to check from both sides)
            listoflist.get(i).add(arr[i][j]);

    }
}