Divide una cadena en una ArrayList

Estoy tratando de dividir una cadena en matrices. Se supone que el programa general convierte el binario en una cadena, pero el problema que tengo es dividir la cadena en matrices. Me siento estúpido porque esto parece algo simple de hacer. el binario viene así "0100100001001001" en lugar de "01001000" "01001001".

public static ArrayList<String> divStr(String str,int div){

    String addable = "";
    ArrayList<String> ret = new ArrayList<String>();
    for(int i = 0; i < str.length();i++){
      addable += str.charAt(i);
      if(i % div == 0 && i != 0){
        ret.add(addable);
        addable = "";
      }
    }
    return ret;
  }
Respuesta 1

Hay 2 problemas con su código.
(1) La condición i % div == 0 && i != 0es incorrecta porque div = 8, digamos , agregará los primeros 9 caracteres a la lista cuando i = 8.
(2) Si la longitud de la cadena strno es un múltiplo div, habrá caracteres que quedarán fuera de la lista.
Entonces cambie a esto:

public static ArrayList<String> divStr(String str,int div){
    String addable = "";
    ArrayList<String> ret = new ArrayList<String>();
    for(int i = 0; i < str.length();i++){
        addable += str.charAt(i);
        if((i + 1) % div == 0){
            ret.add(addable);
            addable = "";
        }
    }
    if (!addable.isEmpty()) ret.add(addable);
    return ret;
}
Respuesta: 2

Puede usar dividir con expresiones regulares de esta manera:

String[] ret = str.split("(?<=\\G.{" + div +"})");

Si quieres devolver un List:

public static List<String> divStr(String str, int div) {
    return Arrays.asList(str.split("(?<=\\G.{" + div +"})"));
}

Si llama al método, por ejemplo:

System.out.println(divStr("0100100001001001", 8));
>> [01001000, 01001001]

Si se refiere a divla cantidad de partes, puede cambiar su código para que sea:

public static List<String> divStr(String str, int div) {
    int length = str.length() / div;
    return Arrays.asList(str.split("(?<=\\G.{" + length +"})"));
}

luego :

System.out.println(divStr("0100100001001001", 2));
>> [01001000, 01001001]
Respuesta: 3

Primero me gustaría que se supiera que soy MUY nuevo en la codificación. Me gustaría que mi código sea capaz de producir un mensaje JOptionPane diferente para cada botón en el que he hecho clic, incluido t [1] [1] = ...

Tengo un panel javafx y un rectángulo dentro. Quiero hacer que el rectángulo llene todo el espacio del panel sin establecer el ancho o la altura manualmente, porque el panel puede cambiar de tamaño ... ¿alguien puede ayudarme?

Obtengo un StackOverflowError cuando intento llenar una celda con la multiplicación de otras dos celdas de la misma fila. Aquí está el código: tableModel.addTableModelListener (new TableModelListener () {...

Quiero probar un método unitario que establezca la propiedad activa de la clase Persona en Verdadero. La clase Person tiene muchas otras propiedades: public class Person {private int id; Boolean privado ...