我正在尝试不使用像2 2
这样的字符串打印行,但是当前状态只是以notice
开头的行正在被删除。我调试它并在代码行中编写输出。我该如何解决?
我感谢任何帮助。
代码:
int number = Character.getNumericValue(newName.charAt(2));
//here start_zero is `2 2`
String start_zero = new StringBuilder().append(number)
.append(" ").append(number).toString();
try (PrintWriter writer = new PrintWriter(path + File.separator
+ newName);
Scanner scanner = new Scanner(file)) {
while (scanner.hasNextLine()) {
//here is the first line `2 2`
String line = scanner.nextLine();
//here is start_zero `2 2` too.
if (!line.startsWith("notice") || !line.startsWith(start_zero) ) {
writer.println(line);
writer.flush();
}
}
} catch (Exception e) {
e.printStackTrace();
}
答案 0 :(得分:1)
if (!line.startsWith("notice") || !line.startsWith(start_zero) ) {
writer.println(line);
writer.flush();
}
你的问题出在你的if语句中。您使用了OR,但您应该使用AND
if (!line.startsWith("notice") && !line.startsWith(start_zero) ) {
writer.println(line);
writer.flush();
}
如果第一个返回true,那么你的情况就是第二个。
答案 1 :(得分:1)
只需将你的if语句操作符从OR改为AND,就像这样
{assign var='totalTax' value=$total_products_wt - $total_products}
{displayWtPriceWithCurrency price=$totalTax currency=$currency}</span>
答案 2 :(得分:0)
这个条件:
if (!line.startsWith("notice") || !line.startsWith(start_zero) )
表示:“如果该行没有以”notice“开头,或者该行没有以”2 2“开头,请执行以下操作。
这意味着如果该行不以“notice”开头,则整个条件成立。因为只有满足其中一个条件才能满足第一个或第二个条件是正确的。
如果您想要仅在“通知”或“2 2”开头的情况下打印该行,您必须使用以下条件之一:
! ( line.startsWith("notice") || line.startsWith(start_zero) )
(注意:括号是重要的。)或等效(通过DeMorgan定律):
! line.startsWith("notice") && ! line.startsWith(start_zero)
第一个可以被解释为'如果行不是以“notice”或“2 2”开头,则执行以下操作,第二个可以解释为:如果行不以“2”开头,请执行以下操作“通知”并不以“2 2”开头。