Member 14024601 Ответов: 1

Как изменить значение 0 в массиве на другое значение


Как изменить код, когда значение подстроки больше 0 будет по модулю 2, но если меньше или равно 0, то автоматически превратится в значение 3

Что я уже пробовал:

double rulesfpadouble =1.45779894373497397E20;
   String[] too = String.valueOf(rulesfpadouble).replaceAll("\\D", "").split("");
              int[] remainders = new int[too.length];
            int count;

               for (int i = 0; i < too.length; i++)
               {
                   if(too[i]=="0"){

                   remainders[i] = ((Integer.parseInt(too[i])+1)*3);

                   }
                   else if (too[i]!="0")
                   {
                 remainders[i] = (Integer.parseInt(too[i]) % 2);
                   }
              //System.out.println("Remainders :\t"+ remainders[i]);
               }

              //System.out.println(Arrays.toString(remainders));

               str = Arrays.toString(remainders).replaceAll("\\s+","")
              .replace(",", "")  //remove the commas
              .replace("[", "")  //remove the right bracket
              .replace("]", "")  //remove the left bracket
              .trim();           //remove trailing spaces from partially initialized array

            System.out.println("Rule of next gen:\t"+ str);

Member 14024601

Мне нужно убедиться, что в too[i] нет значения 0. Ожидаемое значение в этом случае равно, например, остаткам=11013011
Значение 3 тоже исходит из 0[i]

1 Ответов

Рейтинг:
2

Member1x

Сейчас я имею в виду ваш пример.В вашем примере тестируемое число равно

double rulesfpadouble =1.45779894373497397E20;

Итак, ваша переменная выглядит так
too = [1, 4, 5, 7, 7, 9, 8, 9, 4, 3, 7, 3, 9, 2, 0];

Так что я думаю, вы ожидаете, что ваш остаток будет:
remainder = [1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 3];

Вы можете достичь этого с помощью следующего кода (я немного смиплифицировал ваш код):
double rulesfpadouble = 1.45779894373497397E20;
String[] too = String.valueOf(rulesfpadouble).replaceAll("\\D", "").split("");
int[] remainders = new int[too.length];
for (int i = 0; i < too.length; i++) {
    int numberToTest = Integer.parseInt(too[i]);
    if (numberToTest == 0) {
	remainders[i] = 3;
    } else {
	remainders[i] = (Integer.parseInt(too[i]) % 2);
    }
}

В вашем коде тест на ноль не удался. Это потому что ты прокляла String.valueOf() метод. Если вы хотите проверить строку напрямую, вы должны использовать too[i].equals("0").
Надеюсь, это поможет.