Classe Scanner e string

Pessoal, é meu primeiro post no forum. Sou novo no java, mas já estudei muito C. Estou fazendo um curso no youtube e a professora manda fazer uma agenda com uma matriz. Eu sei a lógica disso com tranquilidade, mas fui executar pra aparar as arestas do código e ele não passa da leitura doprimeiro scan imputado na matriz. Já percebi que se por scan.next() ele le, mas nesxtLine não, mas o next é só se eu por tudo colado, tipo camel case, senão dá pau. Segue o código:

import java.util.Scanner;

public class PrincipalLoiane {

public static void main(String[] args) {
	
	Scanner scan = new Scanner(System.in);
	
	
	String[][] agenda = new String[30][24];
	
	int dia=0;
	int hora=0;
	int confComp;
	int mostra;
	
	
	while(true){
		
		
		System.out.println("Agenda Coorporativa ");
		System.out.println("Para inserir compromisso tecle \"1\" e para ler tecle \"2\"");
		
		confComp = scan.nextInt();
		
		if(confComp==1){
			System.out.println("Diga o dia do compromisso:");
				dia=scan.nextInt();
			System.out.println("Dia a hora do compromisso: ");
				hora = scan.nextInt();
			System.out.println("Diga o compromisso: ");
				agenda[dia][hora] = scan.nextLine();	//<======= Problema aqui!`Texto pré-formatado`			
				
			
		} else if (confComp ==2){
			
			System.out.println("Para todos aperte \"1\"T ou qualquer oura coisa para definir o dia");
			mostra=scan.nextInt();
			
			if(mostra==1){
				
				for(dia=0;dia<agenda.length;dia++){
					
					for(hora=0;hora<agenda[0].length;hora++){
						
						if(hora == 0 )
							
							System.out.println("Dia "+(dia+1));
						System.out.println("Hora: "+ hora);
						
						System.out.println("Compromisso: "+agenda[dia][hora]);
					}
					
				}
				
			}else{
				System.out.println("Diga o dia: ");
				dia=scan.nextInt();
				for(hora=0;hora<agenda[0].length;hora++){
					System.out.println("Hora "+ hora+" compromisso "+ agenda[dia][hora]);
				}
				
				
			}
		
		}else
			System.out.println("Dados inconsistentes");
		
		
		
		
		
	}
	
	
	


	
}

}

O compilador joga o seguinte:

next retorna o próximo token, nextLine retorna a linha inteira.

mas se eu ponho nextLine ele nem pausa pra imputar do teclado. Segue direto.

Essa sequência de nextAlgumaCoisa e depois nextLine é problemática.

Quando você faz:

int x = scanner.nextInt();

Você digita um número na input e aperta enter, uma quebra de linha. Essa função nextInt não lê a quebra de linha. Ela ainda fica lá na standard input. Por isso, quando você chama nextLine(), a função vai ler a quebra de linha e vai interpretar isso como a input.