Как я могу проанализировать мой 2d массив с массивом покрытия, чтобы найти символ? - PullRequest
0 голосов
/ 28 января 2019

По сути, мое задание - хранить сообщение в двумерном массиве, и это сообщение поставляется с сопроводительным сообщением, которое представляет собой серию штрихов и цифр O, которые необходимо «поместить поверх» исходного сообщения с определенной координатой (строка, столбец), чтобы показать сообщение.В настоящее время я застрял на том, как «разместить» исходное сообщение поверх исходного сообщения для декодирования текста.Мои друзья сказали мне, чтобы я проанализировал обложку сообщения и написал серию if утверждений, в которых говорилось: «Если есть o, возьмите это измерение в двумерный массив и добавьте его в переменную сообщения».

Это сообщение:

«Мы считаем эти истины самоочевидными, что все люди созданы равными, что они наделены своим Создателем определенными неотчуждаемыми правами,что среди них - Жизнь, Свобода и Погоня за Счастьем. Чтобы обеспечить эти права, среди мужчин учреждаются правительства, получающие свои справедливые полномочия с согласия управляемых, - что всякий раз, когда любая форма правления становится разрушительной для этих целей,Народ вправе изменять или отменять его, а также учреждать новое правительство, основывая его на таких принципах и организуя свои полномочия в такой форме, которая, по их мнению, скорее всего повлияет на их безопасность и счастье ».

И это сообщение на обложке:

-O------O-----O-------------------------
--O----O--------------------O------O----
------O---O-----------------------------
----------------------O--------------O--
------------------------------O-----O---
-----------------------------------O----
-------O---------------------O----------

Любая помощь приветствуется, спасибо.

Редактировать: Пока я заполнил2d массив с сообщением и 2d массив с сообщением обложки.Сопроводительное сообщение должно помещаться поверх исходного массива сообщений, начиная с [2][5].Надеюсь это поможет.

import java.io.*;
import java.util.*;

public class M {

    public static void main(String[] args) throws FileNotFoundException {
        File inFile = new File("input.txt");
        Scanner scanFile = new Scanner(inFile);

        int lines;
        lines = scanFile.nextInt();

        String message = "";
        for (int i = 0; i <= lines; i++)
            message += scanFile.nextLine();

        message = message.replace(" ", "");
        message = message.replace(",", "");
        message = message.replace("-", "");

        String[][] am = new String[lines][59];

        fill2DArray(am, message);
        print2DArray(am);

        System.out.println(Arrays.deepToString(am).replace("], ", "]\n"));

        String r = scanFile.nextLine();
        r = r.replace(",", "");
        String ro = r.substring(0,1);
        String co = r.substring(1);

        int crow = Integer.parseInt(ro);
        int ccol = Integer.parseInt(co);

        int cline = scanFile.nextInt();
        System.out.println(cline);

        String cover = "";
        for (int u = 0; u <= cline; u++)
            cover += scanFile.nextLine();

        String[][] cm = new String[cline][40];

        fill(cm, cover);
        print2DArray(cm);
    }

    public static void fill2DArray(String[][] arr2D,String message)
    {
        int counterLetters = 0;

        for(int i =0;i<arr2D.length;i++) //arr.2D.length gives row length
        {
            for(int j = 0;j<arr2D[i].length;j++)//arr2D[].length gives column length
            {
                arr2D[i][j] = message.substring(counterLetters, counterLetters+1);
                counterLetters++;
            }
            System.out.println();
        }
    }

    public static void fill(String[][] arr2D,String cover)
    {
        int counterLetters = 0;

        for(int i =0;i<arr2D.length;i++) //arr.2D.length gives row length
        {
            for(int j = 0;j<arr2D[i].length;j++)//arr2D[].length gives column length
            {
                arr2D[i][j] = cover.substring(counterLetters, counterLetters+1);
                counterLetters++;
            }
            System.out.println();
        }
    }

    public static void print2DArray(String[][] arr2D)
    {
        for(int i =0;i<arr2D.length;i++) //arr.2D.length gives row length
        {
            for(int j = 0;j<arr2D[i].length;j++)//arr2D[].length gives column length
            {
                System.out.print(arr2D[i][j]);
            }
            System.out.println();
        }
    }
}

1 Ответ

0 голосов
/ 28 января 2019

Что вы можете сделать, это перебрать всю длину массивов и проверить, равен ли элемент по определенному индексу в массиве покрытия O.Если это так, то добавьте элемент из массива сообщений в строку, которая будет содержать полное сообщение:

// Assuming that the cover and message arrays are of type chars

String messageStr = "";
// Since the message and cover arrays should be the same length, it doesn't matter which one is used to get the length of the loop
for (int i = 0; i < messageArray.length; i++) {
    for (int j = 0; j < messageArray[i].length; j++) {
        if (cover[i][j] == 'O') {
            messageStr += messageArray[i][j];
        }
    }
}
...