Ich führe einen Code, der eine Liste von Ints und eine Liste von Zeichenfolgen, und erhöht separat die Größe des Arrays auf die richtige Größe und sortiert dann das Array in einer anderen Methode während Sie dann auch eine Instanz eines Duplikats finden. Der Code ist bis zu dem Punkt in Ordnung, wo ich die Methoden ausführen, wo es mein Array sortiert und nach Duplikaten sucht. Ich weiß, was die richtige Ausgabe sein sollte, und es sollte kein Duplikat in intList und ein Duplikat in WordList unter Index 45788 gefunden werden. Ich habe um Hilfe von anderen gebeten, die diese einfache Aufgabe ausführen und denselben Code wie sie haben. Ich muss irgendwo weg sein, aber ich kann nicht finden wo. Ich habe ein Foto der beiden Methoden neben der Ausgabe in der Eingabeaufforderung angefügt. Vielen Dank für jede HilfeJava Run Fehler bei Code, der funktioniert
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
Wenn es „run Fehler“, dass es nicht „Code, der funktioniert“ sein können und umge versa – Antoniossss
Fügen Sie Ihren Code zu der Frage statt die Bilder. – TimeToCode
Sie zeigten die Ausnahme (in einem Bild anstelle von Kopieren und Einfügen) und zeigte dann nicht einmal die Zeile, auf die es verweist (Zeile 144, in indexOfFirstDupe) ... – jonhopkins