Sin ver el código original no sabría decirte que ocurre.
Sí puedo comentar que un problema muy habitual es que, tras leer un dato numérico con nextInt(), nextFloat(), etc....
Si después intentamos leer un String con nextLine(), esta lectura fallará.
Por ejemplo:
System.out.print("Introduce tu numero: );
int numero = input.nextInt();
System.out.print("Introduce tu nombre: );
String nombre = input.nextLine();
En este código no se podrá introducir el nombre, se quedará como una cadena vacía.
¿Por qué?
Porque cuando introducimos el número, tecleamos el número y además pulsamos la tecla intro para terminar la entrada.
Esa tecla intro, aunque no lo veamos, genera un carácter especial llamado "retorno de carro".
Entonces, nextInt() va a coger del input aquello que le sirva para construir un valor Integer, así que cogerá los números tecleados por el usuario, pero no cogerá el carácter retorno de carro.
Ese carácter no desaparece, se queda en el flujo de datos del input.
Luego, viene la lectura con nextLine(). Este método cogerá todo lo necesario para construir una línea completa. Para ello, necesita recoger también el carácter retorno de carro, que es lo que completa y finaliza una línea.
¿Que ocurre?
Que al pedir el nombre, nextLine() se encuentra que en el flujo de datos ya hay un retorno de carro, el que nextInt() dejó abandonado. Entonces nextLine() se confunde, piensa que el usuario ya ha terminado de teclear el nombre y da por finalizada la entrada de datos.
Por eso, siempre que intentemos leer un String con nextLine(), después de haber leído un valor numérico, esa lectura fallará.
No se si será este tu caso.
Por supuesto, tiene solución.
Una es que al terminar de leer datos numéricos, hagamos un nextLine() para eliminar cualquier retorno de carro que haya quedado en el input.
No hace falta recogerlo en ninguna variable, simplemente invocamos al método:
System.out.print("Introduce tu numero: );
int numero = input.nextInt();
input.nextLine() //Eliminamos carácter retorno de carro del flujo de datos
System.out.print("Introduce tu nombre: );
String nombre = input.nextLine();
Otra solución, es hacer TODAS las lecturas usando siempre nextLine().
Entonces, si queremos un dato numérico, lo que hacemos es
parsear(transformar) el String que nos ha dado nextLine(), en el tipo de dato numérico que deseamos:
System.out.print("Introduce tu numero: );
int numero = Integer.parseInt(input.nextLine()); //Leemos String y parseamos a Integer
System.out.print("Introduce tu nombre: );
String nombre = input.nextLine();
Cualquier forma es válida, pero quizás sea mejor esta última, por dos motivos:
1- Más adelante, cuando hagas interfaces gráficas con ventanas, botones, campos de texto... los datos SIEMPRE los vas a recibir como un String.
Así que siempre vas a tener que
parsear al tipo de dato numérico que necesites.
Por lo tanto, no viene mal ir cogiendo ya la costumbre.
2- Esta forma de leer datos, directamente como String para automáticamente parsear a valor numérico, es la forma habitual de leer datos en otros lenguajes que seguramente algún día querrás meterles mano como C#.
Así que también habrás adquirido ya esta costumbre.
Insisto, no se si era este tu problema. Si pudiéramos ver el código quizás te pudiéramos informar mejor.
Un saludo.