Remplir un tableau d'objets
Je suis actuellement étudiant Java et pas tout à fait sûr de savoir comment le faire.
Pour le moment j'ai une classe employé
public class employee {
private int empID;
private String empName;
private String job;
//constructors;
public employee(){
this.empID = 0;
this.empName = "";
this.job = "";
}
public employee(int empID, String empName, String job){
this.empID = empID;
this.empName = empName;
this. job = job;
}
//gets;
public int getEmpID(){
return this.empID;
}
public String getEmpName(){
return this.empName;
}
public String getJob(){
return this.job;
}
//sets;
public void setEmpID(int empID){
this.empID = empID;
}
public void setEmpName(String empName){
this.empName = empName;
}
public void setJob(String job){
this.job = job;
}
}
Alors que dans mon main, j'ai créé un tableau d'objets de type employé avec une taille de 2, puis de simplement augmenter le tableau de comptage tout en laissant à l'utilisateur d'entrer quelques informations de base et une autre boucle pour imprimer toutes les informations saisies.
import java.util.Scanner;
public class employeeArray {
public static void p(String s) {System.out.println(s);}
public static void main(String args[]){
Scanner k = new Scanner(System.in);
int empID, size=0, x=0;
String empName;
String job;
employee [] employees = new employee[2];
for(size = 0; size < 2; size++)
{
p("Employee "+(size+1));
p("Please enter employee ID number: ");
empID = k.nextInt(); k.nextLine();
p("Please enter your name: ");
empName = k.nextLine();
p("Please enter your job role: ");
job = k.nextLine();
employees[size] = new employee();
employees[size].setEmpID(empID);
employees[size].setEmpName(empName);
employees[size].setJob(job);
}
for(x=0; x<2;x++){
p("Hello employee: "+employees[x].getEmpName()+" your job role is "+employees[x].getJob()+
" your log in ID is 0800"+employees[x].getEmpID());
}
}
}
Je comprends comment remplir chaque instance de l'objet en entrée, mais dire que j'ai voulu augmenter la taille de 2 à 20, mais déjà les 10 premiers pré-entré' alors j'ai pu afficher le 10 j'ai actuellement, mais encore le droit d'entrée 10 de plus.
ps. désolé pour ma longue haleine question, les blocs de code et de la mauvaise ou l'absence de terminologie. Je suis nouveau sur ce.
OriginalL'auteur | 2013-03-20
Vous devez vous connecter pour publier un commentaire.
Ne vous embêtez pas à l'aide de tableaux lorsque vous avez besoin de redimensionner dynamiquement, sauf si c'est strictement nécessaire (et même dans ce cas, vous pourriez convertir par
ArrayList.toArray(..)
).Utiliser un
ArrayList<Employee>
au lieu thatn unEmployee[]
. Vous n'aurez pas à vous soucier de la capacité, vous n'aurez pas à vous soucier de la suppression et le déplacement des éléments. Il serait également soutenir le générique de conteneurs.Comme une note de côté: la convention de nommage de Java suggère d'utiliser des
Capitalized
noms de classes.List<Employee> lstEmployess = new ArrayList<Employee>()
. Plus d'infos: Que signifie “programme pour une interface”?Merci pour la réponse. j'ai un peu de comprendre ce que vous dites. La seule chose est, tableaux d'objets est l'apprentissage d'un sujet plus que im essayant d'obtenir ma tête autour de cela pour l'instant, je veux le code de la taille de la matrice à 20 et 10 sont déjà entrés et juste ajouter 10 plus de la saisie de l'utilisateur
Tout comme Jack dit, si vous voulez un tableau dynamique en Java utiliser une ArrayList. de simples tableaux sont de taille fixe. Dans votre exemple, vous instancié un tableau avec la taille de deux. Si vous voulez ajouter plus de deux des éléments que vous auriez à allouer un nouveau tableau avec la taille de 3. Puis copiez le contenu de l'ancien tableau à la nouvelle pile et placez votre troisième élément dans le tableau. Car cela implique beaucoup de code (et erreurs), il est préférable d'utiliser la liste de tableaux. Il fait ces choses pour vous (et un peu plus intelligent et plus efficace).
OriginalL'auteur Jack
Java array (avec un petit "a" -- un
[]
objet) est de taille fixe lors de la création. Donc, si vous créez le tableau avec 10 éléments, il aura toujours exactement 10 éléments (bien que certains d'entre eux peuvent ne pas avoir les valeurs non null). Si vous avez besoin d'augmenter la taille de la matrice au-delà de ce qui est actuellement alloué taille alors bonne chance!! .... Heu, je veux dire que vous devez allouer un nouveau, plus grand groupe et ensuite copier le contenu de la petite table en elle.La copie d'un tableau dans ce mode n'est pas inefficace, mais il est maladroit et sujettes à l'erreur, donc il y a plusieurs classes du JDK (java.util.ArrayList) qui peut contenir une liste de longueur variable et de gérer le laid choses pour vous. (Pour dire la vérité, en général, ces classes de garder un tableau interne et de le copier à un plus grand lorsque le besoin, tout comme vous le feriez, donc ils ne sont pas plus efficaces. Mais ils simplifier le codage et de réduire les erreurs, et c'est le point important.)
OriginalL'auteur Hot Licks
Tout d'abord de changer le nom de la classe à
Employee
au lieu deemployee
. Stick avec les conventions de nommage java.Maintenant, Vous devriez prendre avantage de l'utilitaire java classes à la place . par Exemple
ArrayList<Employee>
.ArrayList
met en œuvre de façon dynamique redimensionnement de la matrice, ce qui permet à l'utilisateur d'insérer autant de quantité de données sans se soucier de la taille actuelle de l'internearray
parce queArrayList
est là pour prendre soin d'elle. Mais avant d'utiliserArrayList
pour stocker vosEmployee
objets dont vous avez besoin pour remplacerequals
méthode dansEmployee
parce queArrayList
en interne utilise cette méthode pour rechercher l'existence de regarder un objet semblable dans certaines méthodes. Leequals
méthode se présente comme suit au sein deEmployee
classe:Maintenant , Vous pouvez utiliser
ArrayList
manière suivante:Voulez-vous appliquer à l'utilisateur de remplir ces 20 salariés avant d'aller plus loin? Je gues je ne pouvais toujours pas obtenir votre point de vue.
Humm, vraiment ce que je cherche à obtenir à l'est; je veux de 20 employés. mais 10 de ces salariés de disposer des informations les concernant (numéro d'identification, nom, emploi) ensuite, permettre à l'utilisateur d'être en mesure d'ajouter plus d'employés, s'ils le souhaitent. Afin de 20 employés. 10 de qui déjà numéro d'identification, le nom et l'emploi. et lorsque vous exécutez le programme, il promps à l'utilisateur d'ajouter un autre empolyee qui sera le numéro 11
OriginalL'auteur Vishal K
Selon vous, le commentaire que vous ne voulez en fait pas un tableau dynamique mais avec une taille fixe de 20 et 10 est entré en elle.
Exemple:
Cependant, vous serez celui qui est chargé de garder la trace de ce qui est dans le tableau et ce n'est pas, et vous ne pouvez pas ajouter plus de 20 éléments dans le tableau.
Edit:
Vous avez édité votre post. Avec le code ci-dessus, vous pourriez faire ce que vous voulez. Si vous voulez vraiment augmenter dynamiquement votre tableau sans l'aide d'une liste de tableaux, vous pouvez utiliser le Système de#arrayCopy
http://docs.oracle.com/javase/7/docs/api/java/lang/System.html#arraycopy(java.lang.Objet, int, java.lang.Objet, int, int)
Il vous permet de copier votre tableau à un autre (vide) tableau avec la nouvelle taille.
OriginalL'auteur Ozzie