我有一个应该从导入的TXT读取的程序,并将每一行转换为基于“Art”或Jewellery的变量
文件导入工作正常,行列表也可正常工作。
问题是当我尝试将列表中的字符串与“ART”进行比较时,它将不匹配。 但棘手的是,我使用打印输出来打印字符串,它实际上给了我字符串“ART”!!
Scanner sc = new Scanner(importedFile);
while (sc.hasNextLine()) {
stringList.add(sc.nextLine());
}
// start from the third line of txt
int i = 2;
// stucked in infinity loop!!!!!
while (i < stringList.size()) {
String type = stringList.get(i);
System.out.println(type);
System.out.println(stringList.size());
if (type == "ART") {
// add art consignment information
consignmentName = stringList.get(i + 1);
System.out.println("art");
i=i+2;
type = stringList.get(i + 2);
} else if (type == "JEWELLERY") {
//add JEWELLRY consignment
consignmentName = stringList.get(i + 1);
System.out.println("Jewellery");
type = stringList.get(i + 2);
i=i+2;
}
}
txt文件是:
Walt Richman’s Estate Collection
5
ART
Water Lilies
JEWELLERY
Diamond Solitaire in White Gold
的输出
System.out.println(type);
System.out.println(stringList.size());
是
"ART" and "36"and it is in a infinity loop.
我在if循环中插入了一个“System.out.println(art)”,并且它没有打印,这意味着它永远不会进入它
所以我真的不知道什么时候
“System.out.println(type)”= ART,那么为什么if(type ==“ART”)不起作用
这真的很奇怪,有人能帮助我吗?
答案 0 :(得分:1)
已发现问题:
<强> 1 即可。你没有增加变量i,所以虽然(i < stringList.size()) {
永远不会是flase
。
因此,您需要增加i
变量
<强> 2 即可。 “问题是当我尝试将列表中的字符串与”ART“进行比较时,它将无法匹配。”
因为您需要使用equals()
来比较两个不是==
<强>为什么强>
<强> 1 即可。 等于()比较您正在寻找的内容
<强> 2 即可。 == 比较引用是否引用查看相同的位置
答案 1 :(得分:0)
您需要增加变量i。
答案 2 :(得分:0)
你永远不会增加我。因此我保持原始值,你的while循环永远运行...