【发布时间】:2015-11-24 21:03:05
【问题描述】:
我在加载字符串时遇到问题:
public void loadGameDataFromFile() {
try
{
FileInputStream saveFile = new FileInputStream("SaveObj.sav");
ObjectInputStream objectStream = new ObjectInputStream(saveFile);
place = (String) objectStream.readObject(); // place is a string //defined at the start of my class
objectStream.close();
saveFile.close();
System.out.println(place);
}catch(Exception e)
{
e.printStackTrace(System.out);
}
}
像这样加载字符串后,我尝试使用一个案例并出现问题。在我看来,它并没有像应有的那样比较它们。
那是switch语句的代码:
public enum Places
{
Anfang,
Strand,
Wald, Waldex, Berg, Höhle, Höhlet, Haus1, Haus2, Haus3, Haus4, Strandex, Höhlett, Kampf, Lichtung, Wald2, Fuß, Bergm, Spitze, Keller, Strand2, Strandx2, Gespräch,Höhlettt //this are the Strings which my String "place" can be...
}
public void actionPerformed( ActionEvent evt)
{
Places replace = Places.valueOf(place);
switch(replace)
{
case Anfang: //do my stuff
break;
case Strand: //do my stuff
break;
case Wald: //do my stuff
break;
}
}
这个问题只有在加载后使用字符串时才会出现。当我在不加载字符串的情况下启动它时,它就可以正常工作。
当我删除枚举并在 switch 语句中只使用我的字符串时,它有同样的问题,它似乎不理解字符串等于其中一种情况。
更新: 问题仍然存在,我可以将我的情况更改为 if else 但这将退出解决问题。
【问题讨论】:
-
这段代码真的很难阅读,因为它没有使用标准的 Java 约定:变量应该以小写字母开头,理想情况下,枚举常量应该全大写。
Place是用来上课的吗?一个变量?它的类型是什么? -
到底是什么问题?它期望做什么以及实际做什么?
-
您可以在加载中看到 Place 是我的字符串....而约定是经常被忽略的东西...抱歉。
-
开关用于显示由字符串决定的位置不同的文本,但是在我加载字符串后它不再起作用......我已经尝试用枚举修复它,但它仍然相同问题。
-
String的大小写是否正确?例如安芳而不是安芳?另外,在switch语句之前检查places 的值是什么。
标签: java string enums switch-statement loading