Pass array as parameter

1

I have a question regarding arrays . So I have the following code:

public static void main(String[] args) {

    //Objetos.....

    ColeçãoCidades ListaCidades = new ColeçãoCidades();

    //Adicionar regiões
    Scanner sc = new Scanner(System.in);

    System.out.print("Digite quantas regiões serão criadas: ");
    int quant = sc.nextInt();

    Scanner sc3 = new Scanner(System.in);

    Regiao[] regioes = new Regiao[quant];
    for (int i=0;i<quant;i++){
        System.out.print("\nInforme o nome da região: ");
        String reg = sc3.next();
        System.out.print("\nINforme o código da região: ");
        int cod = sc3.nextInt();
        regioes[i]= new Regiao(cod,reg);
    }


    // Menu
    MenuCidade(ListaCidades);
    }


    private static void MenuCidade(ColeçãoCidades lista) {

    Scanner sc2 = new Scanner(System.in);
    int op;

    do{
        // Apresentar as opções
        System.out.print("\n\tSegue abaixo as opções disponíveis para o menu cidade...\n\n" + 
                        "1) Adicionar cidade\n" + 
                        "2) Pesquisar Cidades Por Região\n" + 
                        "3) Pesquisar Cidades Por Estado\n" + 
                        "4) Pesquisar Cidades Por País\n" + 
                        "5) Pesquisar Cidades com Mais de 'X' habitantes\n" + 
                        "6) Remover cidade por nome\n" +
                        "7) Remover cidade por código\n" +
                        "8) Pesquisar Cidades Com Nível De Complexidade Maior Que 'X'\n" +
                        "0) Sair\n");
        System.out.print("Digite uma opção: ");
        op = sc2.nextInt();

        // Verificar se o valor dado está entre as opções válidas...
                    if((op < 0) || (op > 8)){
                        System.out.println("\n\tOpção inválida - Tente novamente");
                    }else
                    switch(op){

                    case 1: Cidade cid = new Cidade();
                            Cidade(cid);
                            lista.adicionarCidade(cid);
                            break;

                    case 2: System.out.print("NOme da região: ");
                            String regiao = sc2.nextLine();
                            lista.pesquisaCidadesPorRegião(regiao);
                            break;

                    case 3: System.out.print("NOme do Estado: ");
                            String estado = sc2.nextLine();
                            lista.pesquisaCidadesPorEstado(estado);
                            break;

                    case 4: System.out.print("Nome do País: ");
                            String pais = sc2.nextLine();
                            lista.pesquisaCidadesPorPaís(pais);
                            break;

                    //case 5:

                    case 6: System.out.print("Nome da cidade: ");
                            String nome = sc2.nextLine();
                            lista.removeCidadePorNome(nome);
                            break;

                    case 7: System.out.print("Código da cidade: ");
                            int codigo = sc2.nextInt();
                            lista.removeCidadePorCódigo(codigo);
                            break;

                    //case 8:

                    }
    }while (op!=0);

}   


    public static void Cidade (Cidade cid){
    Scanner sc = new Scanner(System.in);

    //Apresentar o menu cadastro...
    System.out.println("\n\tCadastro de nova cidade");

    System.out.print("\nCódigo da cidade: ");
    int codigo = sc.nextInt();

    System.out.print("\nNome da cidade: ");
    String nome = sc.nextLine();

    System.out.print("\nPopulação: ");
    double populacao = sc.nextDouble();

    System.out.print("\nEstado: ");
    String estado = sc.next();

    System.out.print("\nPaís: ");
    String pais = sc.next();

    System.out.print("\nRegião: ");
    String reg = sc.next();
    //pesquisaRegiao(Regiao[] array,reg);

    System.out.println("\n\tCadastro realizado com sucesso!!!");

}


    //private static void pesquisaRegiao(Regiao[] array, String reg) {


    }
}
    
asked by anonymous 22.01.2016 / 13:17

1 answer

2

The code is quite confusing and you would need to make several changes to resolve the problem. The first is to correct the signature of the method that will receive the regions, it failed to type:

 private static void pesquisaRegiao(Regiao[] regioes, String regiao) {

The other change required is to pass the array with the regions to the method that needs to use it:

public static void Cidade (Cidade cid, Regiao[] regioes) {

Then I'd call it like this:

Cidade(cid, regioes)

You would have to do the same when you switch to the menu.

Do you have a static method with the same name as a class? Do not do that.

Try to avoid abbreviations in the names of things. This affects legibility and does not bring real benefits.

For the Java style, the most likely case in this case is to throw the regioes variable into the class and access it from all methods where it is needed without having to go through the methods.

I thought of writing an example of how to do this, but to do it right I would have to rewrite all the code, which I do not think is the goal. And I do not know if it would be a good one, since you are having difficulties with the basics, starting to structure the code in classes seems like a step that you are not yet ready to do.

Try to organize the code first in simpler methods , which only do one thing , which communicate more clearly. Remember that the code is not something magic, it is a text that the computer must understand, but mainly that a human should read naturally. Before encoding it is necessary to understand the problem and find the correct structure to represent it in the code.

One tip: when you need to put comments, it means that there should be another method there. You have comments that are simply unnecessary. Comments are rarely needed in fact and certainly should not be used for what was in this code.

Go packing one thing at a time. Alias, maybe it's best to start again by doing one thing at a time. You can ask here in every step you take, so it's easier to help. It is very difficult to help when the code is poorly structured. I strongly suggest that you follow this suggestion for qualified help. In new questions here describe the problem and what you started doing. One step at a time. It's important to do a clean code , and cohesive .

    
22.01.2016 / 13:45