diff --git a/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp
index 418c77d7c82f0bb89686902fbbf04c1ff6746b58..18b78c4df4e4b95c6ac8ef5a7efff2ad3c6c5231 100644
--- a/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp
+++ b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp
@@ -136,10 +136,9 @@ static void latinime_BinaryDictionary_getHeaderInfo(JNIEnv *env, jclass clazz, j
     if (!dictionary) return;
     const DictionaryHeaderStructurePolicy *const headerPolicy =
             dictionary->getDictionaryStructurePolicy()->getHeaderStructurePolicy();
-    const int headerSize = headerPolicy->getSize();
-    env->SetIntArrayRegion(outHeaderSize, 0 /* start */, 1 /* len */, &headerSize);
-    const int formatVersion = headerPolicy->getFormatVersionNumber();
-    env->SetIntArrayRegion(outFormatVersion, 0 /* start */, 1 /* len */, &formatVersion);
+    JniDataUtils::putIntToArray(env, outHeaderSize, 0 /* index */, headerPolicy->getSize());
+    JniDataUtils::putIntToArray(env, outFormatVersion, 0 /* index */,
+            headerPolicy->getFormatVersionNumber());
     // Output attribute map
     jclass arrayListClass = env->FindClass("java/util/ArrayList");
     jmethodID addMethodId = env->GetMethodID(arrayListClass, "add", "(Ljava/lang/Object;)Z");
@@ -184,8 +183,7 @@ static void latinime_BinaryDictionary_getSuggestions(JNIEnv *env, jclass clazz,
         jfloatArray inOutLanguageWeight) {
     Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict);
     // Assign 0 to outSuggestionCount here in case of returning earlier in this method.
-    int count = 0;
-    env->SetIntArrayRegion(outSuggestionCount, 0, 1 /* len */, &count);
+    JniDataUtils::putIntToArray(env, outSuggestionCount, 0 /* index */, 0);
     if (!dictionary) {
         return;
     }
diff --git a/native/jni/src/suggest/core/result/suggestion_results.cpp b/native/jni/src/suggest/core/result/suggestion_results.cpp
index 6594a12925add0bd6751214e1ce7e39fa66defc7..4c10bd08af2e4dbd531fd9282925c47e464602fc 100644
--- a/native/jni/src/suggest/core/result/suggestion_results.cpp
+++ b/native/jni/src/suggest/core/result/suggestion_results.cpp
@@ -32,24 +32,19 @@ void SuggestionResults::outputSuggestions(JNIEnv *env, jintArray outSuggestionCo
         JniDataUtils::outputCodePoints(env, outputCodePointsArray, start,
                 MAX_WORD_LENGTH /* maxLength */, suggestedWord.getCodePoint(),
                 suggestedWord.getCodePointCount(), true /* needsNullTermination */);
-        const int score = suggestedWord.getScore();
-        env->SetIntArrayRegion(outScoresArray, outputIndex, 1 /* len */, &score);
-        const int indexToPartialCommit = suggestedWord.getIndexToPartialCommit();
-        env->SetIntArrayRegion(outSpaceIndicesArray, outputIndex, 1 /* len */,
-                &indexToPartialCommit);
-        const int type = suggestedWord.getType();
-        env->SetIntArrayRegion(outTypesArray, outputIndex, 1 /* len */, &type);
+        JniDataUtils::putIntToArray(env, outScoresArray, outputIndex, suggestedWord.getScore());
+        JniDataUtils::putIntToArray(env, outSpaceIndicesArray, outputIndex,
+                suggestedWord.getIndexToPartialCommit());
+        JniDataUtils::putIntToArray(env, outTypesArray, outputIndex, suggestedWord.getType());
         if (mSuggestedWords.size() == 1) {
-            const int autoCommitFirstWordConfidence =
-                    suggestedWord.getAutoCommitFirstWordConfidence();
-            env->SetIntArrayRegion(outAutoCommitFirstWordConfidenceArray, 0 /* start */,
-                    1 /* len */, &autoCommitFirstWordConfidence);
+            JniDataUtils::putIntToArray(env, outAutoCommitFirstWordConfidenceArray, 0 /* index */,
+                    suggestedWord.getAutoCommitFirstWordConfidence());
         }
         ++outputIndex;
         mSuggestedWords.pop();
     }
-    env->SetIntArrayRegion(outSuggestionCount, 0 /* start */, 1 /* len */, &outputIndex);
-    env->SetFloatArrayRegion(outLanguageWeight, 0 /* start */, 1 /* len */, &mLanguageWeight);
+    JniDataUtils::putIntToArray(env, outSuggestionCount, 0 /* index */, outputIndex);
+    JniDataUtils::putFloatToArray(env, outLanguageWeight, 0 /* index */, mLanguageWeight);
 }
 
 void SuggestionResults::addPrediction(const int *const codePoints, const int codePointCount,
diff --git a/native/jni/src/utils/jni_data_utils.h b/native/jni/src/utils/jni_data_utils.h
index 01a5685b440453a713c547bf11f94a5a28b172fb..67a66fdfe532c81890283a0d6f963452a2616875 100644
--- a/native/jni/src/utils/jni_data_utils.h
+++ b/native/jni/src/utils/jni_data_utils.h
@@ -90,6 +90,15 @@ class JniDataUtils {
         }
     }
 
+    static void putIntToArray(JNIEnv *env, jintArray array, const int index, const int value) {
+        env->SetIntArrayRegion(array, index, 1 /* len */, &value);
+    }
+
+    static void putFloatToArray(JNIEnv *env, jfloatArray array, const int index,
+            const float value) {
+        env->SetFloatArrayRegion(array, index, 1 /* len */, &value);
+    }
+
  private:
     DISALLOW_IMPLICIT_CONSTRUCTORS(JniDataUtils);