Je cours un code qui prend une liste d'ints, et une liste de chaînes, et augmente séparément la taille du tableau à la bonne taille, puis trie le tableau dans une méthode différente tout en trouvant ensuite une instance d'un doublon. Le code est bon jusqu'au point où j'exécute les méthodes où il trie mon tableau et recherche les doublons. Je sais quel devrait être le bon résultat, et il ne devrait pas y avoir de doublon dans intList et un double trouvé dans wordList à l'index 45788. J'ai demandé de l'aide à d'autres personnes pour faire la même tâche et avoir le même code. Je dois être quelque part mais je ne peux pas trouver où. J'ai joint une photo des deux méthodes à côté de la sortie dans l'invite de commande. Merci pour toute aideJava Run Erreur sur le code qui fonctionne
import java.io.*;
import java.util.*;
public class Lab4
{
static final int INITIAL_CAPACITY = 10;
static final int NOT_FOUND = -1; // indexOfFirstDupe returns this value if no dupes found
public static void main (String[] args) throws Exception
{
// ALWAYS TEST FIRST TO VERIFY USER PUT REQUIRED INPUT FILE NAME ON THE COMMAND LINE
if (args.length < 1)
{
System.out.println("\nusage: C:\\> java Lab4 <numbers file> <words filename>\n\n"); // i.e. C:\> java Lab4 10000ints.txt 172822words.txt
System.exit(0);
}
String[] wordList = new String[INITIAL_CAPACITY];
int[] intList = new int[INITIAL_CAPACITY];
int wordCount = 0, intCount=0;
Scanner intFile = new Scanner(new File(args[0]));
BufferedReader wordFile = new BufferedReader(new FileReader(args[1]));
// P R O C E S S I N T F I L E
while (intFile.hasNextInt()) // i.e. while there are more ints in the file
{
if (intCount == intList.length)
intList = upSizeArr(intList);
intList[intCount++] = intFile.nextInt();
} //END WHILE intFile
//close intfile
intFile.close();
//output text with variables
System.out.format("%s loaded into intList array. size=%d, count=%d\n",args[0],intList.length,intCount);
int dupeIndex = indexOfFirstDupe(intList, intCount);
if (dupeIndex == NOT_FOUND)
{
System.out.format("No duplicate values found in intList\n");
}
else
{
System.out.format("First duplicate value in intList found at index %d\n",dupeIndex);
}
// P R O C E S S S T R I N G F I L E
while (wordFile.ready()) // i.e. while there is another line (word) in the file
{
if (wordCount == wordList.length)
wordList = upSizeArr(wordList);
wordList[wordCount++] = wordFile.readLine();
} //END WHILE wordFile
//closing wordfile
wordFile.close();
//output text again with variables
System.out.format("%s loaded into word array. size=%d, count=%d\n",args[1],wordList.length,wordCount);
dupeIndex = indexOfFirstDupe(wordList, wordCount);
if (dupeIndex == NOT_FOUND)
{
System.out.format("No duplicate values found in wordList\n");
}
else
{
System.out.format("First duplicate value in wordList found at index %d\n",dupeIndex);
}
}
// --------------------------------------------------------------------------------------------------------------------------------
// method to double size of string array
static String[] upSizeArr(String[] fullArr)
{
int length = fullArr.length;
//creating a new array of double size
String[] upsizearr = new String[length*2];
//this for loop assigns each old variable in fullArr
//and assigns it to the new larger array, upsizearr
for(int i = 0; i<length-1; i++)
{
upsizearr[i] = fullArr[i];
}
return upsizearr;
}
// method to double size of int array
static int[] upSizeArr(int[] fullArr)
{
int length = fullArr.length;
//creating new array of double size
int[] upsizearr = new int[length*2];
//this loop does the same as in upSizeArr method,
//assigning all values to new bigger array
for(int i = 0; i<length-1; i++)
{
upsizearr[i] = fullArr[i];
}
return upsizearr;
}
// use Arrays.sort() before scanning for dupe
static int indexOfFirstDupe(int[] arr, int count)
{
Arrays.sort(arr);
int value = NOT_FOUND;
for(int i = (arr.length - count); i < count; i++)
{
if(arr[i] == arr[i-1])
{
value = i;
break;
}
}
return value;
}
// use Array.sort() before scanning for dupe
static int indexOfFirstDupe(String[] arr, int count)
{
Arrays.sort(arr);
int value = NOT_FOUND;
for(int i = (arr.length - count); i < count; i++)
{
if(arr[i] == arr[i-1])
{
value = i;
break;
}
}
return value;
}
} // END CLASS
[] [] 2
Si elle le « code qui fonctionne » « erreur d'exécution » qu'il ne peut pas être et vice versa – Antoniossss
Ajoutez votre code à la question à la place des images. – TimeToCode
Vous avez montré l'exception (dans une image au lieu de copier et coller), puis n'affichez même pas la ligne à laquelle il fait référence (ligne 144, dans indexOfFirstDupe) ... – jonhopkins