Java123 Java123 - 2 months ago 127
Java Question

JAVA: Finding Values in an Array

Set numMatches to the number of elements in userValues (having NUM_VALS elements) that equal matchValue. Ex: If matchValue = 2 and userValues = {2, 2, 1, 2}, then numMatches = 3.

import java.util.Scanner;

public class FindMatchValue {
public static void main (String [] args) {
final int NUM_VALS = 4;
int[] userValues = new int[NUM_VALS];
int i = 0;
int matchValue = 0;
int numMatches = -99; // Assign numMatches with 0 before your for loop

userValues[0] = 2;
userValues[1] = 2;
userValues[2] = 1;
userValues[3] = 2;

matchValue = 2;

**/* Your solution goes here */**

numMatches = 0;

for(i = 0; i < NUM_VALS; ++i) {
if(userValues[i] == matchValue)
numMatches = i;
}


System.out.println("matchValue: " + matchValue + ", numMatches: " + numMatches);

return;
}
}


My solution has mistakes that I can't figure out.

Testing matchValue = 0,

userValues = {0, 0, 0, 0, 0}

Expected value: 5

Your value: 4 <<< This is where I'm going wrong.

Answer
for(i = 0; i < NUM_VALS; ++i) {
   if(userValues[i] == matchValue) {
      //numMatches = i;   //WRONG
      numMatches++;     //Correct
   }
}

This block is incorrect, you are assigning numMatches to the index value of the array rather, it should have been that if there's a match increment values of numMatches by 1.