【发布时间】:2017-02-28 03:57:17
【问题描述】:
现在,这听起来像是一个以前重复过很多次的问题,但我已经对有其他原因的人进行了一天的研究。
我有一个函数可以读取保存文件的一部分,并且显示它确实接收到了正确的数据。所以错误是整数变量完全忽略了新变量并且在实时调试器中没有显示任何变化,所以就像许多其他帖子一样,它不仅仅是一个重复的对象错误。我似乎无法确定这里的主要问题是什么,这是阻碍我的最后一个主要问题。任何帮助都会很棒,如果我确实错过了互联网上有关此主题的话题,我感到非常抱歉。
失败的代码:
@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 可能导致了这个问题,现在我终于可以再次遵循路径了
【问题讨论】:
-
请发MCVE,这里没有足够的帮助,但是我的意思是整数变量完全忽略了新变量,并在eclipse调试器中观看整数变量被分配给不同的数字但保持不变 不连贯。它到底是什么意思?
-
你们中的任何人都需要添加更多示例吗?
-
@furProgrammer 不,但我们需要更好的解释