Java 逻辑和不检查两个条件
我有一个csv文件,我正在使用扫描仪读取该文件:Java 逻辑和不检查两个条件,java,csv,Java,Csv,我有一个csv文件,我正在使用扫描仪读取该文件: pencil,XX,10 eraser,YY,rectangle sharpener,YY,new pencil,YY,12 我只想在两个条件都为真时写入文件,即,如果我的第一个参数为“pencil”,第二个参数为“YY”,则只会省略最后一行,但我的当前输出为空 我做了一个sysout来检查我的参数和项/属性是否匹配,它们是否匹配 然而,若我删除一个条件,那个么它将省略所有以铅笔作为“项目”的行,但我似乎不明白为什么在检查了这两个条件之后它才不
pencil,XX,10
eraser,YY,rectangle
sharpener,YY,new
pencil,YY,12
我只想在两个条件都为真时写入文件,即,如果我的第一个参数为“pencil”,第二个参数为“YY”,则只会省略最后一行,但我的当前输出为空
我做了一个sysout来检查我的参数和项/属性是否匹配,它们是否匹配
然而,若我删除一个条件,那个么它将省略所有以铅笔作为“项目”的行,但我似乎不明白为什么在检查了这两个条件之后它才不写。我是java新手,有点困在这里。您的
if
语句非常模糊但有一件事我可以肯定,
Java IF语句
带有逻辑and&
仅当第一个条件为true
时才尝试检查第二个条件。如果发现第一个条件为false
您可以通过运行以下命令来确认这一点:
if (false && 1==(1/0)) {
// if it checks for 1/0 it would fail with Math Exception.
} else {
System.out.println("Didn't check second condition as first was false);
}
我想从csv文件中删除一条记录,其名称和属性作为命令行参数给出 我做错的是,根据德莫根定律,把两个否定条件放在-&上:(不是A,不是B)=不是(A或B)(归功于@David R Tribble) 因此,简单的解决方案是:
while(scanner.hasNext()){
item = scanner.next();
property1 = scanner.next();
property2 = scanner.next();
if(item.equals(args[1]) && property1.equals(args[2])) {
continue;
} else {
printWriter.println(item + "," + property1 + "," + property2);
}
}
谢谢你的帮助。如果表达式的计算结果与真值表一样,我可能会退一步,详细分析一下
表达式的计算结果。包括非求反的值。这将是一个有价值的练习。另外,请记住DeMorgan定律:(非a和非B)=非(a或B),它可以让您以更容易理解的形式重写逻辑表达式。@ZephyrX您能重新表述您的描述吗?根据给定的输入,预期的输出是什么?哇!德摩根定律。我现在解决了这个问题,去掉了否定,把继续代码>并写入else语句中的文件。谢谢你的提示。@ZephyrX你能回答你自己的问题看看解决方案是什么吗?一点也不含糊,只是不正确。虽然你说的是对的,但这更多的是一个评论而不是一个答案,因为它没有解决他们的问题。
while(scanner.hasNext()){
item = scanner.next();
property1 = scanner.next();
property2 = scanner.next();
if(item.equals(args[1]) && property1.equals(args[2])) {
continue;
} else {
printWriter.println(item + "," + property1 + "," + property2);
}
}