0

こんにちは、私は Java の初心者で、問題を抱えています。

私のプログラムは、文字列を Jframe に出力します。v[0] は常に null です。そして、ユーザーからの入力を要求して、配列 v の 1 つの位置を削除します。これを numberdel と呼びます。配列がある場合

v[0]=[null] v[1]=[こんにちは] v[2]=[私の名前は] v[3]=[ジョン] かつ numberdel=2 の場合

最終結果は

v[0]=[ヌル] v[1]=[こんにちは] v[2]=[ジョン]

私はそれを作っていなかったので、b という新しい配列を作成しました。しかし、それはまだ望んでいたようには機能していません...

public static
(...)

String[] b = new String[v.length-1];

boolean jump = false;

for(int j=1; j<b.length; j++){
    if(jump==false){
        if(j != numberdel){
            b[j] = v[j];
        }
        else jump = true;
    }
    else{
        b[j] = v[j+1];
    }
    (...)//action for every cycle
}
(...)
4

3 に答える 3

0

System.arrayCopyarray から始めて使用しvます。numberdel削除する 0 ベースのアイテムです。

String[] b = new String[v.length-1];

System.arrayCopy(v, 0, b, 0, numberdel);
System.arrayCopy(v, numberdel + 1, b, numberdel, v.length - numberdel);
于 2013-03-29T18:13:39.607 に答える
0

の場合j == numberdel、ループは に設定さjumpれ、ステートメントtrueをスキップします。else

jump変数は基本的に false であり、そうでない場合は true になるため、使用しないことをお勧めしj < numberdelます。

for(int j = 1; j < b.length; j++)
{
    if (j < numberdel)
        b[j] = v[j];
    else
        b[j] = v[j + 1];
}
于 2013-03-29T18:02:39.250 に答える
0

以下のように、単一の配列自体でタスクを実行できます...

void delet(int numberdel)
{
     for(int i=numberdel ; i< v.length ;i++)
        v[i] = v[i+1];

}

1 つの配列で同じことを実行できる場合は、スペースを無駄にする理由をお勧めします...あなたはそのことをうまくやっていますが、これはより良いと思います...それがうまくいくことを願っています...

于 2013-03-29T18:11:24.363 に答える