dúvidas com array e strings

3 respostas
Donizeti

Bom galera sou iniciante em programação , e to com uma dúvida no seguinte código:

public static void main(String[] args) {

        String[] aluno = new String[2];
        int[] notas = new int[2];
        int contador = 0;
        int opcao = 0;

       
        for (contador = 0; contador < 2; contador++) {

            System.out.println("Digite nome do aluno: ");
            Scanner digita = new Scanner(System.in);
            aluno[contador] = digita.next();

            System.out.println("Digite nota do aluno: ");
            notas[contador] = digita.nextInt();

        }
        System.out.println("Digite 1-> Todos alunos:");
        System.out.println("Digite 2-> Nota individual:");
        
        Scanner digita = new Scanner(System.in);
        opcao=digita.nextInt();
        switch (opcao) {

            case 1: {
                for (contador = 0; contador < 2; contador++) {

                    System.out.println(" " + aluno[contador] + " " + notas[contador]);

                }break;
            }
            case 2: {// acessando pelo indice do array
                int procura;
                System.out.println("Digite o indíce do aluno desejado: ");
                procura = digita.nextInt();
                System.out.println("Aluno-> "+aluno[procura]+"\nNota-> "+notas[procura]);   
               
                
                break;
            }
            case 3:{//acessando pela string passada pelo usuário
                
            }
            case 4:{
                System.out.println("Obrigado por utilizar nosso software!!!");
                System.exit(0);
            }
            default:
                System.out.println("Opcão desconhecida!!!");

        }
        }
    }

no case 2 eu consigo acessar o array pelo seu indice ,
no case 3 eu queria acessar a nota indivídual de cada aluno , mas não digitando o indice e sim o nome passado
a ele, ficaria assim:
Digite o nome do aluno que vc deseja saber a nota?
E aqui eu passaria o nome( String ) e não o indíce.

Agradeço quem puder me ajudar!!!

3 Respostas

Andre_Brito

Opa!

Faça uma busca pelo array de nomes dos alunos e quando chegar no aluno desejado, imprima a nota dele no índice do nome que você está.

Por exemplo,

String[] alunos = new String[20];
int[] notas = new int[20];

// Depois de tudo inserido e do nome que voce deseja buscar
for (int contador = 0; contador < alunos.length; contador++) {
   if (alunos[contador].equals(nomeDigitado)) {
        System.out.println("A nota do aluno " + alunos[contador] + " e " + notas[contador] ".");
        break;
   }
}

Abraço.

rmendes08

Eu usaria uma Map pra fazer isso:

class Alunos{
   private static final int NUM_ALUNOS = 10;

   public static void main( String [] args ){
       Map<String,Integer> mapNotas = new HashMap<String,Integer>();
       int [] arrayNotas = new int[NUM_ALUNOS];

       Scanner sc = new Scanner( System.in );

       for( int i = 0 ; i < NUM_ALUNOS ; i++ ){
           String nome = sc.next();
           int nota = sc.nextInt();

           mapNotas.put( nome , nota );
           arrayNotas[i] = nota;
       }

       //pra ler a nota a partir do nome
       String nome = "fulano";

       int notaFulano = mapNotas.get( nome );
   }
}
Andre_Brito

Um Map sem dúvida seria a estrutura certa para resolver o problema. O problema é que eu não sei se ele sabe Map e Collections.

Criado 14 de dezembro de 2008
Ultima resposta 14 de dez. de 2008
Respostas 3
Participantes 3