Deveria ser i < vetor.length. Os índices de um array começam em zero, então não pode ir até o length, tem que parar uma posição antes. Senão vc tenta acessar uma posição que não existe.
Eu acho que soma sendo um ‘int’ não consegue receber a atribuição dos valores nos indices do vetor por ele (vetor) ser um ‘double’.
Teria que fazer um casting, acho que:
soma += (int) vetor[i];
Não tenho certeza que o problema seja esse, mas da uma olhada sobre casting em tipos primitivos.