Java程序不循环
Java program does not loop
我有一个从文本文件中读取的程序。以下是文本文件的摘录。我想要做的是读取前 3 行并将单元号 (TD684) 输出到控制台
|12.233 |2016001 |TD684 |Prof. P |04/01/2016 |01
|12.233 |2016035 |TD684 |Prof. P |04/01/2016 |01
|12.233 |2016455 |TD684 |Prof. P |04/01/2016 |01
|10.456 |2016783 |BT473 |Dr. G |07/01/2016 |01
下面是我用来执行此操作的程序。我已经将变量初始化为 false。程序第一次是 运行 它应该将 TD684 分配给变量单元。之后应该检查下一行是否也有 TD684。所以理想情况下它应该输出 TD684 3 次到控制台。但它只发生一次,这让我相信循环不起作用。
while (switched == false){
String line = sc.nextLine();
String[] parts = line.split(Pattern.quote("|"));
if (timesrun == 0){
unit = parts[3];
timesrun++;
}
if (parts[3] == unit){
System.out.println(parts[3]);
}else{
switched = true;
}
}
有人能告诉我我的程序不循环的原因吗?
您应该使用 equals
:
比较字符串相等性
if ( parts[3].equals(unit) ) {
使用 ==
你检查它们是否完全相同的对象,它们不是因为 parts[3]
在每个循环中重新制作,而 unit
保持不变。
我有一个从文本文件中读取的程序。以下是文本文件的摘录。我想要做的是读取前 3 行并将单元号 (TD684) 输出到控制台
|12.233 |2016001 |TD684 |Prof. P |04/01/2016 |01
|12.233 |2016035 |TD684 |Prof. P |04/01/2016 |01
|12.233 |2016455 |TD684 |Prof. P |04/01/2016 |01
|10.456 |2016783 |BT473 |Dr. G |07/01/2016 |01
下面是我用来执行此操作的程序。我已经将变量初始化为 false。程序第一次是 运行 它应该将 TD684 分配给变量单元。之后应该检查下一行是否也有 TD684。所以理想情况下它应该输出 TD684 3 次到控制台。但它只发生一次,这让我相信循环不起作用。
while (switched == false){
String line = sc.nextLine();
String[] parts = line.split(Pattern.quote("|"));
if (timesrun == 0){
unit = parts[3];
timesrun++;
}
if (parts[3] == unit){
System.out.println(parts[3]);
}else{
switched = true;
}
}
有人能告诉我我的程序不循环的原因吗?
您应该使用 equals
:
if ( parts[3].equals(unit) ) {
使用 ==
你检查它们是否完全相同的对象,它们不是因为 parts[3]
在每个循环中重新制作,而 unit
保持不变。