1. ホーム
  2. java

[解決済み] JAVA:配列の中の値を検索する

2022-03-12 21:09:34

質問

userValues(NUM_VALS要素を持つ)の中でmatchValueと等しい要素の数をnumMatchesに設定します。例:matchValue = 2、userValues = {2, 2, 1, 2}の場合、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;
  }
}

私の解答には、理解できない間違いがあります。

matchValue = 0 をテストしています。

userValues = {0, 0, 0, 0, 0}とする。

期待値:5

あなたの値です。 4 <<< ここが間違っているところです。

解決方法は?

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

numMatchesを配列のインデックスに代入しているのであって、マッチした場合はnumMatchesの値を1だけ増加させるべきでした。