¿Puedo aprender codificación en Java o algún otro lenguaje de programación a pesar de tener un pensamiento lógico débil y una matemática deficiente?

¡Sí!
Saber matemáticas es definitivamente una ventaja cuando uno desea emprender el camino del desarrollo de software, independientemente de las herramientas que pueda elegir (lo mismo vale para poseer la capacidad de razonar lógicamente)

Para ser honesto, no ser fuerte en estas dos áreas no significa que no puedas aprender a codificar, pero sí significa que no llegarás muy lejos. Definitivamente no ascendería a los niveles de grandes ingenieros de software como Linus Torvalds (portador de la plataforma Linux) o Martin Ordesky (portador del lenguaje de programación Scala). Pero definitivamente puedes aprender lo suficiente para sobrevivir, tal vez construir un par de aplicaciones web o de otro tipo con una complejidad variable.

Entonces, dependiendo del nivel al que quieras llegar, puedes:

  1. Olvídese de la codificación por ahora y aprenda algo de teoría, como algoritmos, estructuras de datos, etc. Aprenda matemáticas para ciencias de la computación (Página en princeton.edu) Luego, después de un año o dos (tal vez más corto si es rápido), puede volver al aprendizaje. Codificación utilizando cualquier idioma de su elección, como Java.
  2. Pase directamente a la programación y haga lo mejor que pueda para aprender solo lo que no sabe cuando surja. Dicho esto, le aconsejaría que para la opción, elija un idioma más amigable para comenzar, como Javascript o Python. Un lenguaje como Java o Scala podría terminar tu carrera prematuramente en las rocas.

Habiendo visto un montón de código, tengo que decir que definitivamente puedes; Desafortunadamente.

Para ser serio, se puede desarrollar el pensamiento lógico (y el abstracto, que también es muy importante) y considero que la programación es una de las mejores maneras de hacerlo.

Si estás aprendiendo a codificar, desarrollarás un sentido de la lógica. Es intrínseco para cualquier lenguaje de programación y no solo para Java. Solo asegúrate de aprender bien tus conceptos y construir una base sólida. Todo lo demás vendrá naturalmente.

Por qué no le da a Scratch una oportunidad, con sus herramientas de programación gráfica, es ideal para aprender los conceptos, y debido a que es arrastrar y soltar, no hay sintaxis para aprender.