Não entendo porque no loop for (int i = 0; i < qnt; i++), a mensagem "Entre com o nome da obra" é impressa no console logo depois de "Digite o nome do cliente". O bloco dentro da condicional if(sc.hasNextLine()) não deveria rodar só se eu inserisse uma nova linha no console? Alguém saberia me dar uma luz? Obrigado.
package sistemaTZ;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class CadastroCliente {
    public static void main(String[] args) {
        List<Cliente> clientes = new ArrayList<Cliente>();
        List<Obra> obras = new ArrayList<Obra>();
        Scanner sc = new Scanner(System.in);        
        System.out.println("digite quantos clientes quer cadastrar");
        int qnt = sc.nextInt(); 
        if(sc.hasNextLine()){
            for (int i = 0; i < qnt; i++) {
                System.out.println("Digite o nome do cliente:");
                if(sc.hasNextLine()){    
                    Cliente c = new Cliente(sc.nextLine());
                    clientes.add(c);
                    System.out.println("Entre com o nome da obra do cliente: ");
                        if(sc.hasNextLine()){
                            Obra o = new Obra(sc.nextLine());
                            obras.add(o);
                    }    
                }
            }
        }    
        for (int i = 0; i < clientes.size(); i++) {
            Cliente c = (Cliente) clientes.get(i);
            System.out.println(c);
        }                
        sc.close();
    }
}