Форматирование 2D-массива, чтобы иметь структуру дополнительной задачи - PullRequest
0 голосов
/ 21 апреля 2019

Я пытаюсь создать программу, которая включает чтение строк из файла .txt и складывает их вместе, конвертируя их в массивы int [] размера 25. Я решил использовать метод двухмерного массива (который ужевыход из «того, что мы узнали» в этом классе) для объединения нескольких массивов в дополнительном смысле.

Now here's what our professor wants us to get at. Изображение выше, как мой профессор описывает добавление.Мы добавляем целые, найденные в строке, к концу массивов с 25 нулями.Например, если в одной строке файла .txt указано «204 435 45», то мы вернем его так:

0000000000000000000000204

0000000000000000000000435

0000000000000000000000045

Затем мы выполним «элементарную арифметику», как указано в ссылке на фотографию.Теперь вот что я получил до сих пор:

//This is the total overall size of the arrays (with all the zeroes)
public static final int ARRSIZE = 25;

//This is the majority of numbers to add on the biggest line in the .txt file
//This is kind of irrelevant here, but it means we'll always an 8 long array of arrays
public static final int MAXFACTONALINE = 8;

public static void breakTwo(String line)
{
   //Changed the value of the parameter for testing purposes
   line = "204 435 45";
   int[][] factors = new int[MAXFACTONALINE][25];
   //int[] nums = new int[ARRSIZE];
   int determine = 0;
   boolean isSpace = false;
   for(int i = 0; i < line.length(); i++)
   {
      String breakdown = line.substring(line.length() - 1 - i, line.length() - i);
      if(breakdown.equals(" "))
      {
         isSpace = true;
         determine++;
      }

      if(breakdown.equals(""))
         break;

      if(!isSpace)
      {
         int temp = Integer.parseInt(breakdown);
         factors[determine][factors.length - i] = temp;
      }

      isSpace = false;
      i = 0;
   }

   //To do: Implement another method to carry on with the above processing
}

То, что я собираюсь сделать здесь, это разбить эти три числа на части (поскольку они разделены пробелами) и поместить их в свои собственные массивы, точно так же, как3 массива, которые я напечатал выше.

Мой вывод обычно помещает числа, полученные в случайные индексы, и у меня нет хорошей идеи о том, как сохранить то, куда они идут.Может ли кто-нибудь помочь мне определить, как держать их всех на правой стороне, как показано выше в примере?Большое спасибо

1 Ответ

1 голос
/ 21 апреля 2019

Вы можете использовать встроенную функцию split(String regex), чтобы разделить линию для вас.Поскольку вы знаете, что это всегда будет пробел, line.split(" ") вернет массив {"204", "435", "45"}.

После чего вычислите длину строки и объединитеэто строка, которая содержит только 25 - number.length ведущих нулей.

    public static void breakTwo(String line)
    {
       String [] numbers = line.split(" ");
       String [] zeros = new String[numbers.length];


       for (int i = 0; i < numbers.length; i++) {
           zeros[i] = "0";
           for (int j = 0; j < ARRSIZE - numbers[i].length() - 1; j++) {
               zeros[i] += "0";
           }
           zeros[i] += numbers[i];
           System.out.println(zeros[i]);
       }
    }

Выходные данные для breakTwo("204 435 45"):

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