Hi guys I'm having a problem getting the right output for an assignment. I am looking for a way to copy a set of elements from one parallel array (which contains a string--int) to the other with no duplicate value. For example: I have these set of parallel arrays
This is the ORIGINAL PARALLEL ARRAY :
String[] phoneNumbers;
phoneNumbers = new String[100];
int[] callDurations = new int[phoneNumbers.length];
int size = 0;
phoneNumbers[0] = "888-555-0000";
callDurations[0] = 10;
phoneNumbers[1] = "888-555-1234";
callDurations[1] = 26;
phoneNumbers[2] = "888-555-1234";
callDurations[2] = 2;
size = 3;
I want to create a method that creates new pairs of parallel arrays from the original arrays (phoneNumber & callDuration).This method would be called totalDuration and it would return no value(void). It would check if a number from the current array is in the new array, if yes, it will just add any duplicate duration to the current duration. if no, it would add a new element to the NewNumber array and add an element to the NewDuration array.
public static int find(String[] list, int size, int start, String target) {
int pos = start;
while (pos < size && !target.equals(list[pos])) {
pos++;
}
if (pos == size)
pos = -1;
return pos;
}
This find method would be used to check if a phone number has already been placed in the new arrays, and if so, to determine where that number is.
For example, if the array contains
phoneNumbers[0] = "888-555-0000";
callDurations[0] = 10;
phoneNumbers[1] = "888-555-1234";
callDurations[1] = 26;
phoneNumbers[2] = "888-555-1234";
callDurations[2] = 2;
printing calls details for "888-555-1234" would look like:
all calls from:
Calls from 888-555-1234:
888-555-1234 duration: 26s
888-555-1234 duration: 2s
the output for the new method instead should be(26s +2s):
all calls from:
Calls from 888-555-1234:
888-555-1234 duration: 28s
I tried to solve it with this code but its giving a wrong output:
public static void totalDurations(String[] phoneNumbers, int[] callDuration, int size, String target) {
String[] NewNumbers;
int[] NewDuration;
int pos;
NewNumbers = new String[phoneNumbers.length];
NewDuration = new int[callDuration.length];
pos = find(phoneNumbers,size, 0,target);
while(pos < size && !target.equals(phoneNumbers[pos])) {
NewNumbers[pos] = phoneNumbers[pos];
NewDuration[pos] = callDuration[pos];
System.out.println(NewNumbers[pos] + "duration" + NewDuration[pos] +"s");
}
}
NOT-RELATED The code I use to get all my details for each call is my method "findAllCalls"
public static void findAllCalls(String[] phoneNumbers, int[] callDurations, int size, String targetNumber) {
int matchPos;
System.out.println("Calls from " + targetNumber + ":");
matchPos = find(phoneNumbers, size, 0, targetNumber);
while (matchPos >= 0) {
System.out.println(phoneNumbers[matchPos] + " duration: " + callDurations[matchPos] + "s");
matchPos = find(phoneNumbers, size, matchPos + 1, targetNumber);
}
}
System.out.println("\n all calls from: ");
findAllCalls(phoneNumbers,callDurations,size,"888-555-1234");
Any correction would be much appreciated in advance.