как можно увеличить j и m в течение l oop одновременно? - PullRequest
0 голосов
/ 27 апреля 2020

Нужно расширить матрицу, написав каждый элемент матрицы 3 раза.

Например:

эта матрица:

[2 5 6]
[9 2 7]
[4 1 3]

И чтобы получить это :

[2 2 2 5 5 5 6 6 6]
[9 9 9 2 2 2 7 7 7]
[4 4 4 1 1 1 3 3 3]

Но код дает мне это:

[6 6 6 6 6 6 6 6 6]
[7 7 7 7 7 7 7 7 7]
[3 3 3 3 3 3 3 3 3]

Так как можно увеличивать j и m одновременно для l oop?

float[][] matrix = new float[a][b];

System.out.println("Enter Matrix Data");

for (int k = 0; k < a; k++)
{
    for (int j = 0; j < b; j++)
    {
        matrix[k][j] = sc.nextFloat();
    }
}

float[][] 2_matrix = new float[a][b * 3];

for (int k = 0; k < a; k++)
{
    for (int j = 0; j < b; j++)
    {
        for (int m = 0; m < bi * 3; m = m + 3)
        {

            value4 = matrix[k][j];
            value5 = matrix[k][j];
            value6 = matrix[k][j];
            2_matrix [k][m] = value4;
            2_matrix [k][m + 1] = value5;
            2_matrix [k][m + 2] = value6;
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

Для каждого значения matrix[i][j] вам нужно выполнить итерацию расширенной матрицы 3 раз.

Сделайте это следующим образом:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[][] matrix = { { 2, 5, 6 }, { 9, 2, 7 }, { 4, 1, 3 } };
        int[][] expanded = new int[matrix.length][];
        final int MULTIPLIER = 3;
        int i, j, k, n;
        for (i = 0; i < matrix.length; i++) {
            expanded[i] = new int[matrix[i].length * MULTIPLIER];
            n = 0;
            for (j = 0; j < matrix[i].length; j++) {
                for (k = n; k < n + MULTIPLIER; k++) {
                    expanded[i][k] = matrix[i][j];
                }
                n = k;
            }
        }
        for (int[] row : expanded) {
            System.out.println(Arrays.toString(row));
        }
    }
}

Вывод:

[2, 2, 2, 5, 5, 5, 6, 6, 6]
[9, 9, 9, 2, 2, 2, 7, 7, 7]
[4, 4, 4, 1, 1, 1, 3, 3, 3]
0 голосов
/ 27 апреля 2020
        Scanner scanner = new Scanner(System.in);
        float[][] m = new float[3][3];
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                m[i][j] = scanner.nextFloat();
            }
        }

        float[][] m2 = new float[3][9];
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                for (int k = j * 3; k < (j + 1) * 3; k++) {
                    m2[i][k] = m[i][j];
                }
            }
        }

        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 9; j++) {
                System.out.print((int)m2[i][j] + " ");
            }
            System.out.println();
        }
        scanner.close();

Если вы не хотите много менять:)

        for (int k = 0; k < a; k++) {
            for (int j = 0; j < b; j++) {
                for (int m = j * 3; m < (j + 1) * 3; m++) {
                    matrix2[k][m] = matrix[k][j];
                }
            }
        }

, вывод

2 2 2 5 5 5 6 6 6
9 9 9 2 2 2 7 7 7
4 4 4 1 1 1 3 3 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...