2017-02-28 6 views
0

これは以前何度も繰り返されてきた質問のように聞こえるかもしれませんが、私はこの問題の理由がある人たちと研究をしました。Java変数は影響を受けていません

私は、保存ファイルの一部を読み込み、正しいデータを受け取ることが示されています。したがって、整数変数は新しい変数を完全に無視してライブデバッガに変更を表示しないので、他の多くのポストと同様に重複オブジェクトエラーではありません。私はここで主要な問題が何かを突き止めるように思えるし、それは私を後押ししている最後の大きな問題だ。どのような助けが素晴らしいだろうと私は非常に非常に私がインターネット上でこれについてのトピックを見逃してしまった場合はごめんなさい申し訳ありません。失敗

コード:

@Override 
public void read(List<String> data) { 
    //world positions are not being changed at all 

    System.out.println(data.get(1)); 
    int test = Integer.valueOf(data.get(1).replaceAll("[^\\d.]", "")); 
    worldXPos = Integer.valueOf(data.get(0).replaceAll("[^\\d.]", "")); 
    worldZPos = test; 
} 

データを与える別のクラス:

public void readSaveFunctions(){ 
    if(!gameSaves.exists()){ 
     gameSaves.mkdir(); 
    } 
    String currentLine; 
    try { 
     List<String> data = new ArrayList<String>(); 
     FileReader read = new FileReader(currentFile); 
     BufferedReader reader = new BufferedReader(read); 

     String key = ""; 
     while((currentLine = reader.readLine()) != null){ 
      if(currentLine.contains("#")){ 
       key = currentLine; 
       data = new ArrayList<String>(); 
      }else if(currentLine.contains("*end")){ 
       for(int i = 0; i < saves.length; i++){ 
        String tryKey = "#" + saves[i].IDName(); 
        if(tryKey.equals(key)){ 
         key = ""; 
         saves[i].read(data); 
        } 
       } 
      }else data.add(currentLine); 
     } 
     reader.close(); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

はそれを説明する別の方法はこれです: デバッガをステップに設定されている - に - ステップモードので、I人間の速度で実行される各行を参照してください。次に、このような行になりますが、変数を設定するすべての行が同じ効果を持ちます。

デバッガには異なる数値の2つの整数が表示されますが、インスタント・クラス変数はまったく同じ状態のままで、行が通過した後ではデバッガには何の効果もありません。

アップデート:私は方法を言及するのを忘れてしまった が@Overrideメソッドを持っており、この@Overrideは、この問題を引き起こしている可能性と思われ、今ようやく私は再び

+3

[MCVE](http://stackoverflow.com/help/mcve)を投稿してください。私たちが助けてくれるのはここでは十分ではありませんが、*それは整数変数が新しい変数を完全に無視するということです。別の番号に割り当てられている整数変数を見ているが、同じままになっているEclipseデバッガでは、* **は一貫性がありません。それはどういう意味ですか** **? –

+0

皆さんにはもっと多くの例が必要ですか? – furProgrammer

+1

@furProgrammerいいえ、私たちはより良い説明が必要です –

答えて

0

に従うようにパスを持っているかもしれだから私は私の答えを見つけましたAWTスレッドは、読み取ることができる前に整数を変更した別のクラスからメソッドを呼び出すことを有効にすることができます。デバッガはスレッドのうちの1つしか示しておらず、他のスレッドがスレッドを早期に積極的に変更していたことを知る方法がないため、最初は私がオフになっていました。すべての助けをありがとう:P。

関連する問題