2016-04-27 15 views
0

以下のコードからわかるように、myEntriesは文字列の配列を含むリストです。以下のデータがあります。リストに値を置き換えることができない最後の値を置き換えること

[TestSoftware、テストサンプル、AutoTestSoftware11、1、コンセプト、大、ジャワ、ミディアム]

[TestSoftware、テストサンプル、AutoTestSoftware12、1、生命の終わり、超大型、ジャワ、ハイ]

[TestSoftware、テストサンプル、AutoTestSoftware13、1、コンセプト、大、Java(登録商標)、低]

[TestSoftware、テストサンプル、AutoTestSoftware14、1、コンセプト、大、Java(登録商標)、クリティカル]

私の目的は、のようにすることです私はstrから番号を取得したいAutoTestSoftware11のようなもので、その番号に8を加えます。ここでも、その全体の文字列配列をmyEntriesにプッシュしたいと思います。私も出力を掲載しました。私が直面している問題は、最後に変更された値だけがmyEntriesに反映されていることです。

List<String[]> myEntries; 
String[] world = new String[8]; 
int t=0; 

for (String[] element:myEntries) { 
       k=0; 
       for (String temp:element) { 

        if (temp.startsWith("AutoTestSoftware")) { 
         int hi = Integer.parseInt(temp.split("AutoTestSoftware(?=\\d)")[1]); 
         hi += 8; 
         temp = "AutoTestSoftware" + hi; 
        } 
        world[k]=temp; 
        k++; 
       } 
       System.out.println(Arrays.toString(world)+"value of t: "+t); 
       myEntries.set(t,world); 
       t++; 
      } 
      System.out.println("\n\n"); 
      for (String[] element2 : myEntries) 
      { 
       System.out.println(Arrays.toString(element2)); 
      } 

出力:

[TestSoftware、テストサンプル、AutoTestSoftware19、1、コンセプト、大、Java(登録商標)、ミディアム] Tの値:0

[TestSoftware、テストサンプル、AutoTestSoftware20、 1、生命の終わり非常に大きく、Java(登録商標)、高] Tの値:1

[TestSoftware、テストサンプル、AutoTestSoftware21、1、Tの概念、大、Java(登録商標)、低]値:2

[TestSoftware、テストサンプル、AutoTestSoftware22、1、コンセプト、大、Java(登録商標)、クリティカル] Tの値:3

[TestSoftware、テストサンプル、AutoTestSoftware22、1、コンセプト、大、Java(登録商標)、クリティカル]

[TestSoftware、テストサンプル、AutoTestSoftware22、1、コンセプト、大、Java(登録商標)、クリティカル]

[TestSoftware、テストサンプル、AutoTestSoftware22、1、コンセプト、大、Java(登録商標)、クリティカル]

[TestSoftware、テストサンプル、AutoTestSoftware22、1、コンセプト、ラージ、java、クリティカル]

+0

あなたは再使用して 'world'各反復で新しい文字列配列を作成し、いないする必要があります。 Listの各要素はworldを指すように設定されています。これはメモリ内の単なる配列です。したがって、リストの各要素は同じです。 'k = 0;'の下に 'String [] world = new String [8];を置くことをお勧めします – jr593

答えて

0

私のコメントを説明するために、これは動作します:

List<String[]> myEntries; 

int t=0; 

for (String[] element:myEntries) { 
       k=0; 
       String[] world = new String[8]; 
       for (String temp:element) { 

        if (temp.startsWith("AutoTestSoftware")) { 
         int hi = Integer.parseInt(temp.split("AutoTestSoftware(?=\\d)")[1]); 
         hi += 8; 
         temp = "AutoTestSoftware" + hi; 
        } 
        world[k]=temp; 
        k++; 
       } 
       System.out.println(Arrays.toString(world)+"value of t: "+t); 
       myEntries.set(t,world); 
       t++; 
      } 
      System.out.println("\n\n"); 
      for (String[] element2 : myEntries) 
      { 
       System.out.println(Arrays.toString(element2)); 
      } 
+0

ありがとうございました....それは私の問題を解決しました –

関連する問題