Erro quando se usa o comando Set junto com o Scanner

Estou começando a estudar Java agora, e em um exercício me deparei com este erro que vou descrever logo abaixo de parte do código onde acontece o erro.

public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		Curso curso = new Curso("Introdução", "18");
	    Aluno aluno = new Aluno("Paulo Rogério Costa Seixas", "222.256.887-00", 56, curso);
		System.out.println("Dados do aluno: " + aluno.getNome());
		System.out.println("CPF: " + aluno.getCpf());
		System.out.println("Idade: " + aluno.getIdade());
		System.out.println("Curso: " + curso.getNome() + " " + curso.getCodigo());
		System.out.println("Digite o novo nome do aluno: ");
		String novonomea = in.nextLine();
		System.out.println("Digite o novo CPF do aluno: ");
		String novocpf = in.nextLine();
		System.out.println("Digite o nova idade do aluno: ");
	  	int novaidade = in.nextInt();	  	
		System.out.println("Digite o novo nome do curso: ");
		//String novonomec1 = in.nextLine();
		String novonomec = in.nextLine();
		System.out.println("Digite o novo código do curso: ");
		String novocodigo = in.nextLine();
	    curso = new Curso(novonomec, novocodigo);	    
		aluno.setNome(novonomea);
		aluno.setCpf(novocpf);
		aluno.setIdade(novaidade);
		curso.setNome(novonomec);
		curso.setCodigo(novocodigo);
		System.out.println("Novos dados do aluno: " + aluno.getNome());
		System.out.println("CPF: " + aluno.getCpf());
		System.out.println("Idade: " + aluno.getIdade());
		System.out.println("Curso: " + curso.getNome() + " " + curso.getCodigo());
	}

Notem que na linha em que crio a variável novonomec1 (//String novonomec1 = in.nextLine();), coloquei como nota, pois foi a melhor solução para contornar o problema, a criação desta variável que não tem a menor serventia. Do jeito que está o código, o programa não espera a inserção da variável novonomec pelo teclado, pulando para a próxima instrução que é String novocodigo = in.nextLine();. Porem se tirarmos o símbolo de nota // e criarmos a variável novonomec1 não dá o erro.
obs.: Existem as classes Curso e Aluno com seus devidos construtores e comandos get e set.
Alguém pode me esclarecer sobre isso?

Acontece que quando você usa o metodo next da classe Scanner ele irá esperar que você digite o que pediu. Next = Proximo. Se você digita nextLine(), está dizendo ao compilador que a proxima leitura é uma String, caso digite nextInt(), está dizendo que o proximo que virá será um inteiro, nextDouble(), a proxima leitura do tipo double, e assim por diante. Para você poder “driblar” isso, teria que quer criar um novo objeto da classe Scanner, assim esse objeto estaria pronto para receber qualquer tipo, porque ele é zerado ao se criar um novo objeto. Ex:

Ao você dar um in.nextLine(); // aqui estou dizendo que a proxima leitura é uma String
mas e se você colocar um nextInt(); //Ele vai te ignorar, porque você tentou enganar ele.
então, você faz um novo in assim:

in = new Scanner(System.in);
agora o novo in pode receber um int, double, float, ou seja um tipo difrente de String/Line

Muito obrigado. Esclareceu o que eu estava com dúvida.