Создание массива выбранных значений, который отображает только определенные значения - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь выяснить, как распечатать второй массив, который основан на моем первом, но отображает только значения, которые больше значения слева от него и меньше значения справа, и отображают эти значения какстрока в строке, что они находятся в исходном массиве.Вот мой код.

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 голосов
/ 15 октября 2018

Вы не будете знать, сколько элементов соответствует вашим критериям, поэтому вам нужно использовать изменяемый объект.Поскольку каждая строка может иметь различное количество совпадающих чисел, вы не сможете создать обычный массив без нулевых значений в нем большую часть времени.

Используйте 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]);

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...