Olá, sou iniciante em java e preciso fazer um exercício onde eu acho que fazer de uma certa maneira fica mais fácil, mas não sei fazer isso em java, apenas em php. Então por exemplo se eu quero dar um nome ao índice (ou referencia-lo, não sei qual é a expressão correta a se usar) ficaria mais ou menos assim em php:
$nomes = Array ["Aluno" => "Fulano"];
“Aluno” seria o índice e “Fulano” o valor passado a esse índice correto?
Então eu gostaria de saber se existe alguma maneira do tipo pra fazer isso em java? Seja ela parecida ou bem diferente.
Ah sim, valeu achei interessante essa questão dos mapas.
Mas o exercício pede pra eu ler 10 nomes, e atribuir notas a esses nomes e depois ordena-los de forma decrescente.
E como é um exercício de arrays, eu deveria fazer isso em array.
thevalter, acho que não é só isso. Ele quer ordenar os nomes pelas notas em ordem decrescente. A questão é como você iria associar Strings com Floats numa matriz? Acho que não seria possivel colocar os dois tipos numa matriz. Então ele quer criar um array com um tipo double/float para as notas[], e outro vetor/array para os nomes[]. Agora como associar ambos e exibir de forma decrescente? Já que o Desafio é fazer com Vetor[], teria que pensar nas possibilidades. Com outros tipos seria bem mais facil, ArrayList, Vector, por ex, pois já tem os metodos para isso. Fiz aqui rapido bigbossp, a ordenação da forma decrescente das notas, está ok. Agora falta associar as notas aos nomes.
public class Aluno {
public static void main(String args[]) {
Scanner entrada;
double notas[] = new double[10];
String[] nomes = new String[10];
double aux;
int i, j;
int cont = 0;
while (cont<10) {
entrada = new Scanner(System.in);
System.out.println("Cadastro "+cont);
System.out.print("Digite o nome do aluno: "+cont); nomes[cont] = entrada.nextLine();
System.out.print("Digite a nota: "); notas[cont] = entrada.nextInt();
cont++;
}
for (i=0;i<10;i++) { for (j=0;j<9;j++) {
if (notas[j] < notas[j+1]) {
aux = notas[j];
notas[j] = notas[j+1];
notas[j+1] = aux;
}
}
}
System.out.println("\nVetor ordenado de forma decrescente");
for (i=0;i<10;i++) {
// System.out.println("Aluno: "+nomes[i]+" - "+"Nota: "+notas[i]);
System.out.println("Nota: "+notas[i]);
}
Você pode criar classes para resolver esse exercício? Se sim, dá para criar uma classe aluno com os atributos nome e nota, por exemplo. Com isso você poderia ter um array de alunos.
Cara eu fiz assim aqui utilizando matrix para as notas e array para os nomes, tipo o indice do array de nomes tem o numero da linha na matrix parece banco de dados tipo um id. O if é para controle pois a cada loop eu so quero um nome.
Porem o problema aqui é ordenar decrescente fica complicado nada impossivel haha
A ideia das classes também é boa.
boolean isNota;
Scanner entrada;
int[][] Notas = new int[3][2];
String[] nomes = new String[3];
for (int linha = 0; linha < 3; linha++) {
isNota = true;
for (int coluna = 0; coluna < 2; coluna++) {
entrada = new Scanner(System.in);
if(isNota){
System.out.print("Digite o nome do aluno: " + linha);
nomes[linha]=entrada.nextLine();
isNota = false;
}
System.out.print("Digite a nota: ");
Notas[linha][coluna] = entrada.nextInt();
}
}
for (int linha = 0; linha < 3; linha++) {
isNota = true;
for (int coluna = 0; coluna < 2; coluna++) {
if(isNota){
System.out.println("O Aluno " + nomes[linha] + " Tem as Notas: ");
isNota = false;
}
System.out.println(Notas[linha][coluna]);
}
}