Переместить определенные элементы в 2D Array - PullRequest
0 голосов
/ 03 октября 2018

Учитывая 2d массив.Если [i][0] == name, как мне переместить его в последний элемент массива?

String[][] array2d = [ [continents, name, Asia, Europe, Africa, Australia, South America, North America, Antartica],
 [profession, Teacher, Doctor, Lawyer],
 [brand, Apple, Samsung],
[name, Lisa, Peter, Sam, Jake],
[profession, Engineer, Professor, Dentist, Driver],
 [sex, value, Male, Female],
 [exp, value, 1, 2, 3, 4, 6]]

Мой желаемый вывод -

[ [continents, name, Asia, Europe, Africa, Australia, South America, North America, Antartica],
 [profession, Teacher, Doctor, Lawyer],
 [brand, Apple, Samsung],
 [profession, Engineer, Professor, Dentist, Driver],
 [sex, value, Male, Female],
 [exp, value, 1, 2, 3, 4, 6],
[name, Lisa, Peter, Sam, Jake]
]

Ниже приведены коды

 String[][] newArray =new String[array2d.length][];

     for (int i = 0; i < newArray.length; ++i) {
         newArray[i] = new String[array2d[i].length];
         for (int j = 0; j < newArray[i].length; ++j) {
             if (array2d[i][0] != "name") {
                 newArray[i][j] = array2d[i][j];
             }
         }
      }

Однако на выходе получается

[[continents, name, Asia, Europe, Africa, Australia, South America, North America, Antartica],
 [profession, Teacher, Doctor, Lawyer],
 [brand, Apple, Samsung],
 [null, null, null, null, null],
 [profession, Engineer, Professor, Dentist, Driver],
 [sex, value, Male, Female],
 [exp, value, 1, 2, 3, 4, 6]]

Спасибо!

Ответы [ 3 ]

0 голосов
/ 03 октября 2018

Вы можете попробовать таким образом ... Вам нужно только переставить ссылки на массивы

   package testProgram;

import java.util.Scanner;

public class TwoDArray {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        String[][] array = new String[7][];
        array[0] = new String[] { "continents", "Asia", "Europe", "Africa", "Australia", "South America",
                "North America" };
        array[1] = new String[] { "profession", "teacher", "doctor", "lawyer" };
        array[2] = new String[] { "brand", "apple", "samsung" };
        array[3] = new String[] { "name", "lisa", "peter", "sam", "jack" };
        array[4] = new String[] { "profession", "engineer", "Professor", "Dentist", "Driver" };
        array[5] = new String[] { "sex", "value", "male", "female" };
        array[6] = new String[] { "exp", "value", "1", "2", "3", "4" };

        int index = sc.nextInt();
        //shuffling array references
        String[] tempReference = array[index - 1];
        for (int i = index - 1; i < array.length - 1; i++) {
            array[i] = array[i + 1];
        }
        array[array.length - 1] = tempReference;

        for (String[] tempArray : array) {
            for (String s : tempArray) {
                System.out.print(s + " ");
            }
            System.out.println();
        }
    }
}
0 голосов
/ 03 октября 2018
public static void main(String[] args) {

    //Initialize
    String[][] arr = new String[][]{
            new String[]{"continents", "abc"},
            new String[]{"name", "test"},
            new String[]{"something", "test something"},
    };

    int indexOfNameArray = -1;

    //Continuous swap logic
    for (int i = 0; i < arr.length; i++) {
        if (indexOfNameArray > -1 && indexOfNameArray < arr.length - 1) {
            String[] temp = arr[i];
            arr[i] = arr[i - 1];
            arr[i - 1] = temp;
            indexOfNameArray = i;
        } else if (arr[i][0].equals("name")) {
            indexOfNameArray = i;
        }
    }

    //To display output
    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr[i].length; j++) {
            System.out.print(arr[i][j] + ", ");
        }
        System.out.println();
    }
}
0 голосов
/ 03 октября 2018

Первый резервный последний элемент (это массив 1d), глубокое копирование последнего элемента вашего массива во временную переменную как var), а затем скопируйте выбранный элемент (это массив 1d) в последний элемент массива.Наконец, скопируйте резервную копию последнего элемента в выбранный вами массив.это псевдокод.

if(array[i][0] == name){  

   var = deepCopy(array[last]
   array[last] = deepCopy(array[i])
   array[i] = var

}

Эта ссылка о глубоком копировании

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