Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 逻辑和不检查两个条件_Java_Csv - Fatal编程技术网

Java 逻辑和不检查两个条件

Java 逻辑和不检查两个条件,java,csv,Java,Csv,我有一个csv文件,我正在使用扫描仪读取该文件: pencil,XX,10 eraser,YY,rectangle sharpener,YY,new pencil,YY,12 我只想在两个条件都为真时写入文件,即,如果我的第一个参数为“pencil”,第二个参数为“YY”,则只会省略最后一行,但我的当前输出为空 我做了一个sysout来检查我的参数和项/属性是否匹配,它们是否匹配 然而,若我删除一个条件,那个么它将省略所有以铅笔作为“项目”的行,但我似乎不明白为什么在检查了这两个条件之后它才不

我有一个csv文件,我正在使用扫描仪读取该文件:

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);
                }
            }