我正在开展我的第二个更大的编程项目,而且我遇到了困难。我正在为这个项目使用Processing。
我要做的是使用java的实例从包含以下行的外部文本文件中检索信息(用于将某个调色板指定给水平条形图的各个'行') .util.Properties类:
formating = p;p;n;n
我导入它的代码片段如下所示(使用名为'Import'的类来处理BufferedInputStream等):
Import imp = new Import();
Properties properties = imp.importSettings();
下一步从文本文件中读取“格式化”行,并使用分号作为分隔符将其放入四元素字符串数组中。
String[] formating = properties.getProperty("formating").split(";");
我期望这个String数组与我在源代码中使用以下内容创建的相同:
String[] formating2 = {"p", "p", "n", "n"};
但事实并非如此。它已经尝试了很多东西,包括在我的String数组的每个元素中检查不需要的字符(例如空格),将我的文本文件或我用于比较的字符转换为Unicode,将String数组的元素转换为Chars。
我似乎无法工作的是以下比较:
for(int i=0;i < formating.length;i++){
println(formating[i]==formating2[i]);
}
为for循环的每次迭代返回'false'。
我确定这只是一个新手的错误,但如果有人能指出我正确的方向会很好。提前谢谢!
尼克
答案 0 :(得分:2)
使用==比较字符串是不安全的,因为字符串可能是不同的对象并进行比较,无论它们是否包含相同的“文本”,都不会比较文本而是比较对象。所以,你应该这样试试:
println(formating[i].equals(formating2[i]));
或者如果你想避免多余的空格和标签,你也可以这样做:
println(formating[i].trim().equals(formating2[i].trim()));