Les devoirs nécessitent de lire deux fichiers et de saisir les informations des étudiants en deux arraylistes code> distincts code> s. Ensuite, j'ai besoin d'effectuer 2 fonctions: combinez les deux listes et trier la liste combinée.
public abstract class Tools {
public static ArrayList<JUPASStudent> readJUPASFile(String f) throws Exception {
ArrayList<JUPASStudent> jList = new ArrayList<JUPASStudent>();
BufferedReader readbuffer = null;
readbuffer = new BufferedReader(new FileReader(f));
String strRead;
while ((strRead = readbuffer.readLine()) != null) {
String splitarray[] = strRead.split("/t");
String firstentry = splitarray[0];
String secondentry = splitarray[1];
JUPASStudent x = new JUPASStudent(firstentry, Double.parseDouble(secondentry));
jList.add(x);
}
readbuffer.close();
return jList;
}
public static ArrayList<NonJUPASStudent> readNonJUPASFile(String f) throws Exception {
ArrayList<NonJUPASStudent> njList = new ArrayList<NonJUPASStudent>();
BufferedReader readbuffer = null;
readbuffer = new BufferedReader(new FileReader(f));
String strRead;
while ((strRead = readbuffer.readLine()) != null) {
String splitarray[] = strRead.split("/t");
String firstentry = splitarray[0];
String secondentry = splitarray[1];
NonJUPASStudent x = new NonJUPASStudent(firstentry, Double.parseDouble(secondentry));
njList.add(x);
}
readbuffer.close();
return njList;
}
public static ArrayList<Student> combineArrayList(ArrayList<JUPASStudent> S1, ArrayList<NonJUPASStudent> S2) {
ArrayList<Student> sList = new ArrayList<Student>();
for (int i = 0; i < S1.size(); i++)
sList.add(S1.get(i));
for (int i = 0; i < S2.size(); i++)
sList.add(S2.get(i));
return sList;
}
public static ArrayList<Student> sort(ArrayList<Student> s){
for (int i = 0; i < s.size()-1; i++) {
for (int j = 0; i < s.size()-i-1; j++) {
if (s.get(j).getResult() > s.get(j+1).getResult()) {
Student Temp = s.get(j);
s.set(j, s.get(j+1));
s.set(j+1, Temp);
}
}
}
return s;
}
}
4 Réponses :
dans la boucle interne, vous définissez une contrainte au mauvais compteur. Au lieu de:
for (int j = 0; j < s.size()-i-1; j++)
Bon endroit. Un exemple de plus pour la raison pour laquelle des noms de variables plus significatifs aident à réduire les bogues résultant de la typose (ou des variables déroutantes).
Merci, je viens de modifier le code mais le problème reste non résolu.
Dans l'emballage Java.Util, nous pouvons: p>
Vous n'avez donc plus besoin d'écrire votre propre fonction. P> Collections.sort (Arrays.Aslist (13, 4)); Code> P>
collections.addall (arranges.aSlist (13, 4), tableaux.Aslist (3,4,5)); Code> P>
Je ne peux pas utiliser les collections.sort en raison de la restriction des devoirs :(
Pouvez-vous ajouter peu de relevés System.out. Cela vous aidera à voir où l'erreur. Je soupçonne les données du fichier. p>
Le problème que vous rencontrez peut être dans la ligne ci-dessous. Dans la méthode READNONJUPASFILE ET READJUPASFILE
if (splitarray.length > 1) {
String firstentry = splitarray[0];
String secondentry = splitarray[1];
}
Énorme merci. Résolu l'erreur
Veuillez accepter cette réponse.
S'il vous plaît vérifier ce lien - Stackoverflow.com/help/someone-answers
Bienvenue à cela. Veuillez lire Comment demander et noter que lorsque vous demandez des exceptions, vous devez publier la stacktrace et marquer les lignes de votre code mentionné là-bas. En bref, le message que vous obtenez signifie que vous essayez d'accéder à l'index 1 d'un tableau qui a seulement indice 0 (c'est-à-dire la longueur 1).
Veuillez poster la trace de la pile de l'erreur.