Java 如果…则加载.sav文件后比较器失败

Java 如果…则加载.sav文件后比较器失败,java,if-statement,multidimensional-array,comparator,Java,If Statement,Multidimensional Array,Comparator,我最近重新开始编程,并决定学习Java作为我的第一门主要语言。在我开始钻研文件保存之前,我一直没有遇到任何重大问题。我几乎采用了我遇到的第一种方法;输入和输出流。我遇到的问题是在“AnalyzeEvents”方法中。如果不存在用户数据,那么该方法将正常运行,并获得预期的输出。如果用户数据确实存在,那么“AnalyzeEvents”中的第一个If…then语句将运行,但它永远不会发现条件语句为true。然而,一旦我删除了UserData.sav文件,一切都会恢复正常。我已经花了数小时检查程序各个阶

我最近重新开始编程,并决定学习Java作为我的第一门主要语言。在我开始钻研文件保存之前,我一直没有遇到任何重大问题。我几乎采用了我遇到的第一种方法;输入和输出流。我遇到的问题是在“AnalyzeEvents”方法中。如果不存在用户数据,那么该方法将正常运行,并获得预期的输出。如果用户数据确实存在,那么“AnalyzeEvents”中的第一个If…then语句将运行,但它永远不会发现条件语句为true。然而,一旦我删除了UserData.sav文件,一切都会恢复正常。我已经花了数小时检查程序各个阶段的输出,但到目前为止,还没有找到为什么if…then语句在使用加载的数据时失败,但在其他方面成功的原因。我也尝试过在数据被抛出到“analyzeIncidents”之前保存然后加载数据,它在第一次运行时工作,但在以后的任何尝试中都失败了。希望你们能指出我肯定的一个明显的错误

主要内容:

import java.io.*;
导入java.util.*;
公共级营养分析EAPP{
静态扫描仪用户输入=新扫描仪(System.in);
公共静态void main(字符串[]args){
int元素=0;
int selectedElement=0;
int[][]意外事件分析=新int[2][50];
字符串newElement=“999”;
字符串[][]data2012=新字符串[366][51];
//检查以前的保存文件是否存在。如果不存在,则创建新的保存文件。
文件f=新文件(“C:/Users/Liam/Dropbox/Workspace/nutalyze/UserData.sav”);
如果(f.exists()){
System.out.println(“加载了上一个工作会话”);
data2012=loadData();
}否则{
data2012[0][0]=“格兰诺拉麦片”;
data2012[0][1]=“面筋”;
data2012[0][2]=“糖”;
data2012[0][3]=“牛肉”;
data2012[1][0]=“乳制品”;
data2012[8][0]=“奶酪”;
data2012[59][0]=“比萨饼”;
data2012[59][1]=“芯片”;
data2012[206][0]=“啤酒”;
data2012[206][1]=“奶酪”;
data2012[8][50]=“事件”;
data2012[59][50]=“事件”;
data2012[85][50]=“事件”;
data2012[190][50]=“事件”;
data2012[206][50]=“事件”;
保存数据(data2012);
}
System.out.println(“今天是星期几?”);
int currentDay=userInput.nextInt();
elements=numberOfElements(当前日期,数据2012);
System.out.println(“当天消耗的元素:+元素”);
System.out.println(“您想添加什么元素?”);
newElement=userInput.next();
而(!newElement.equals(“49”)){
data2012=addElement(currentDay,elements,newElement,data2012);
elements=numberOfElements(当前日期,数据2012);
System.out.println(“您想添加什么元素?”);
newElement=userInput.next();
}
System.out.print(“您希望看到哪个元素?”);
selectedElement=userInput.nextInt();
while(selectedElement!=49){
System.out.println(“您选择的元素是:+data2012[currentDay][selectedElement]);
System.out.println(“您键入:“+selectedElement”);
System.out.print(“您希望看到哪个元素?”);
selectedElement=userInput.nextInt();
}
data2012=gatherElements(data2012);
事故分析=分析事故(数据2012);

对于(int x=0;x,您是通过字符串的引用来比较字符串,而不是为了语义平等。这是:

if (userData[x][50]=="incident")
应该是:

if (userData[x][50].equals("incident"))
if (!userData[365][z].equals(userData[x][y])) {
...
} else {
}
或者如果您想继续,即使
userData[x][50]
为空:

if ("incident".equals(userData[x][50]))
你在其他地方也会这样做:

if (userData[365][z]!=userData[x][y]) {
...
} else if (userData[365][z]==userData[x][y]) {
}
这应该是:

if (userData[x][50].equals("incident"))
if (!userData[365][z].equals(userData[x][y])) {
...
} else {
}
(您不需要第二个条件,因为它与第一个条件完全相反。)