Java变量不受影响
问题描述:
现在,这听起来像是一个以前已经重复过的问题,但我已经与这个问题有其他原因的人一起研究了一天。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();
}
}
解释它的另一种方式是这样的: - 到 - 步模式,所以我 调试器设置步骤失败
代码看到每条线以人的速度执行,然后我得到这样的一条线,但所有设置变量的线都具有相同的效果:
worldXPos = Integer.valueOf(data.get(0).replaceAll("[^\\d.]", ""));
并且调试器显示具有不同数字的两个整数,但即时类变量保持完全相同,在线路通过后调试器中无效。
更新: 我忘了提及该方法具有@override方法,似乎这@override可能会造成这个问题,现在我终于可以有遵循再次
答
所以我发现我的答案的路径:AWT线程设法激活从另一个类中调用一个方法,该方法在读取之前更改整数。起初我真的不知道,因为调试器只显示其中一个线程,无法知道另一个正在主动将其更改为早期版本。感谢所有的帮助:P。
请发表一个[MCVE](http://*.com/help/mcve),这里没有足够的帮助我们,但*我的意思是整数变量完全忽略了新变量,在eclipse调试器中看整数变量被分配到不同的数字,但只是保持不变* **不是**一致的。它究竟是什么意思**? –
做任何你们需要更多的例子添加? – furProgrammer
@furProgrammer不,但我们需要更好的解释 –