1

この答えはここから来ます:forループを使用した2Darrayから1darrayへ

答えられたら再開できるかどうかわかりません。その場合はお詫び申し上げます。

この関数を次のように終了するように少し変更しました。

public  String[] initarray() {

xFINAL = new String [data_array.length];
int i = 0;
int j=0;
int UMB1 = 100;
int l = data_array.length;

for (i=0 ; i < l ; i++) {
        LATIT = Double.parseDouble(data_array [i][2]);
        LONGIT = Double.parseDouble(data_array [i][3]); 

        dist = calculateDistanceByHaversineFormula(Localizacion.LONGITUD_D, Localizacion.data_arrayUD_D,LONGIT,  LATIT);

        if (dist < UMB1){

            xFINAL[j++] = data_array [i][0];
                    System.out.println(Arrays.toString(xFINAL));
                    System.out.println("j++" + data_array[i][0]);

                }

            }

return xFINAL;

}

dist = 2つの場所間のメートルの差で、intを返します。

data_arrayは以前にすでに定義されています。

それは「一種の働き」です。そのコードから得られるのは、このような配列です(data1とdata3は条件内にあり、data2はfalseになります)

[data1 , data3 , null]

そして、代わりにこのようにする必要があります:

[data1, data3]

そのxFINAL配列をスピナーで使用しようとすると、エラーが発生します。

public final void rel() {




String[] array_spinner = MYSQL.xFINAL;

    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_dropdown_item, array_spinner);
    spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    sp_1.setAdapter(spinnerArrayAdapter);
}

スピナーをロードしようとすると、次のようになります。

03-25 13:25:26.367: E/AndroidRuntime(30843): FATAL EXCEPTION: main
03-25 13:25:26.367: E/AndroidRuntime(30843): java.lang.NullPointerException
03-25 13:25:26.367: E/AndroidRuntime(30843):    at     android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:394)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at  android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at  android.widget.Spinner.measureContentWidth(Spinner.java:681)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.widget.Spinner.onMeasure(Spinner.java:442)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.view.View.measure(View.java:15518)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:681)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.view.View.measure(View.java:15518)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:681)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.view.View.measure(View.java:15518)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.view.View.measure(View.java:15518)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.widget.LinearLayout.measureVertical(LinearLayout.java:847)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.view.View.measure(View.java:15518)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2176)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.view.View.measure(View.java:15518)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1874)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1089)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1265)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4351)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.view.Choreographer.doCallbacks(Choreographer.java:562)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.view.Choreographer.doFrame(Choreographer.java:532)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.os.Handler.handleCallback(Handler.java:725)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.os.Handler.dispatchMessage(Handler.java:92)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.os.Looper.loop(Looper.java:137)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at android.app.ActivityThread.main(ActivityThread.java:5041)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at java.lang.reflect.Method.invokeNative(Native Method)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at java.lang.reflect.Method.invoke(Method.java:511)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-25 13:25:26.367: E/AndroidRuntime(30843):    at dalvik.system.NativeStart.main(Native Method)

3つのデータをスピナーに取り込むだけで機能します。そのため、迷子になります。

何か助けてください?:)

前もって感謝します。

[編集]

03-25 19:39:23.081: I/System.out(3501): [00000001]
03-25 19:39:23.081: I/System.out(3501): 00000001
03-25 19:39:23.091: I/System.out(3501): [00000001, 00000003]
03-25 19:39:23.091: D/AndroidRuntime(3501): Shutting down VM
03-25 19:39:23.091: W/dalvikvm(3501): threadid=1: thread exiting with uncaught    exception (group=0x40bac930)
03-25 19:39:23.091: E/AndroidRuntime(3501): FATAL EXCEPTION: main
03-25 19:39:23.091: E/AndroidRuntime(3501): java.lang.IndexOutOfBoundsException:   Invalid index 2, size is 2
03-25 19:39:23.091: E/AndroidRuntime(3501):     at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
03-25 19:39:23.091: E/AndroidRuntime(3501):     at java.util.ArrayList.get(ArrayList.java:304)
03-25 19:39:23.091: E/AndroidRuntime(3501):     at com.example.mvlpres.c_sql.recorre_array2(c_sql.java:635)
03-25 19:39:23.091: E/AndroidRuntime(3501):     at com.example.mvlpres.SincronizacionFragment$1.onClick(SincronizacionFragment.java:179)
03-25 19:39:23.091: E/AndroidRuntime(3501):     at android.view.View.performClick(View.java:4204)
03-25 19:39:23.091: E/AndroidRuntime(3501):     at android.view.View$PerformClick.run(View.java:17355)
03-25 19:39:23.091: E/AndroidRuntime(3501):     at android.os.Handler.handleCallback(Handler.java:725)
03-25 19:39:23.091: E/AndroidRuntime(3501):     at android.os.Handler.dispatchMessage(Handler.java:92)
03-25 19:39:23.091: E/AndroidRuntime(3501):     at android.os.Looper.loop(Looper.java:137)
03-25 19:39:23.091: E/AndroidRuntime(3501):     at android.app.ActivityThread.main(ActivityThread.java:5041)
03-25 19:39:23.091: E/AndroidRuntime(3501):     at java.lang.reflect.Method.invokeNative(Native Method)
03-25 19:39:23.091: E/AndroidRuntime(3501):     at java.lang.reflect.Method.invoke(Method.java:511)
03-25 19:39:23.091: E/AndroidRuntime(3501):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-25 19:39:23.091: E/AndroidRuntime(3501):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-25 19:39:23.091: E/AndroidRuntime(3501):     at dalvik.system.NativeStart.main(Native Method)
4

1 に答える 1

1
 System.out.println(Arrays.toString(xFINAL));

この行は、forループが完了した後でなければなりません。

nullである参照(オブジェクトを保持するもの)の場合。

0であるint/short/byteの場合。

0.0であるフロート/ダブルの場合

ブール値の場合、これは誤りです。

文字列の配列を作成すると、最初はすべてのエントリがnullになります。配列サイズは3だと思うので、最初は[null、null、null]で初期化されます。2つのnullは値に置き換えられ、1つはそのまま残ります。

編集:配列の代わりにArrayListを使用する

List<String> list = new ArrayList<String>();
for (i=0 ; i < l ; i++) {
    LATIT = Double.parseDouble(data_array [i][2]);
    LONGIT = Double.parseDouble(data_array [i][3]); 

    dist = calculateDistanceByHaversineFormula(Localizacion.LONGITUD_D, Localizacion.data_arrayUD_D,LONGIT,  LATIT);

    if (dist < UMB1){

        list.add(data_array [i][0]);
                System.out.println(list);
                System.out.println(list.get(i));

     }

}
于 2013-03-25T13:51:00.273 に答える