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.