Método que retorna um vetor de strings

Tenho um metodo que não recebe nada e retorna um vetor de strings:

public String[] carregarListaCidades() { String database = procurarCaminhoBanco(); // jdbc:postgresql://localhost/locadoras eh o q deve ta dentro do arquivo String usuario = "postgres"; String senha = "masterkey"; String driverName="org.postgresql.Driver"; Connection conexao; Statement consulta; ResultSet resultado; String[] cidades = null; int contador=0; try{ Class.forName(driverName); conexao = DriverManager.getConnection(database,usuario,senha); consulta = conexao.createStatement(); resultado = consulta.executeQuery("SELECT * FROM cidades order by codcidade"); while(resultado.next()){ cidades[contador]=resultado.getString("cidade"); contador++; } }catch(Exception e){JOptionPane.showMessageDialog(null, e.getCause());} return(cidades); }

E pra chamar o método eu faço assim:

String[] cidades=carregarListaCidades();

porém ele dá erro. o que tá errado nesse código?

post o erro !

Vetores não aumentam seu tamanho dinamicamente.

String[] cidades = null;
//e
while(resultado.next()){   
                cidades[contador]=resultado.getString("cidade");   
                contador++;   
           }   

Ou seja, não funciona.
Você precisa determinar o tamanho do Vetor antes de iniciar as chamadas a ele, caso contrário, idicará NullPointerException

//cria o vetor com 100 posições
String[] cidades = new String[100];
while(resultado.next()){   
                cidades[contador]=resultado.getString("cidade");   
                contador++;   
           }   

Isso é inviável.
O correto seria utilizar um ArrayList

Hmm entendi, vou criar como você falou depois posto qui caso deu certo.

Deu certo usando o arrayList, valeu!
Segue o código pra quem quiser:

public ArrayList carregarListaCidades() { String database = procurarCaminhoBanco(); // jdbc:postgresql://localhost/locadoras eh o q deve ta dentro do arquivo String usuario = "postgres"; String senha = "masterkey"; String driverName="org.postgresql.Driver"; Connection conexao; Statement consulta; ResultSet resultado; ArrayList cidades = new ArrayList(); try{ Class.forName(driverName); conexao = DriverManager.getConnection(database,usuario,senha); consulta = conexao.createStatement(); resultado = consulta.executeQuery("SELECT * FROM cidades order by codcidade"); while(resultado.next()){ cidades.add(resultado.getString("cidade")); } }catch(Exception e){JOptionPane.showMessageDialog(null, e.getCause());} return(cidades); }

como eu chamei a função:

ArrayList cidades=a.carregarListaCidades(); for(int i=0;i<cidades.size();i++){ CampoCadastroClientesCidade.addItem(cidades.get(i)); }