我希望能够打印一个不包含单词“Java”,“Code”或“String”的字符串,但我不确定如何实现这一点,因为我认为这可以通过使用' ! (不)。然而,情况并非如此,因为尽管包含了我想要禁止的字词,仍然会打印字符串。
非常感谢任何关于如何实现这一目标的建议。感谢提前。
YYACCEPT
答案 0 :(得分:2)
我认为这可以通过使用'!'来实现(NOT)
是的。您还没有正确地应用它来适应您的情况:
你从这句话开始:
()
检查输入是否包含中的任何,并且您希望否定此声明。
您可以将整个语句包装在括号中(!(userInput6.toLowerCase().contains("java") ||
userInput6.toLowerCase().contains("code") ||
userInput6.toLowerCase().contains("string"))
)并取消 :
a || b
或应用DeMorgan's law来否定断言,其中指出!a && !b
的否定是!userInput6.toLowerCase().contains("java") &&
!userInput6.toLowerCase().contains("code") &&
!userInput6.toLowerCase().contains("string")
。
因此,正如评论中所述的Carcigenicate一样,您需要
||
代替。
您的语句只是检查字符串是否包含这些子字符串中的至少一个。这意味着只有当字符串包含所有这些字符串时,检查才会失败。对于true
,如果任何操作数为true
,则整个语句为.toLowerCase
。
此外,mkobit指出您要检查的字符串应该完全小写。否则,您正在检查false
d字符串是否包含大写字符 - 总是 if
。
更容易想到的方法可能是反转您的if (userInput6.toLowerCase().contains("Java") ||
userInput6.toLowerCase().contains("Code") ||
userInput6.toLowerCase().contains("String")) {
System.out.println("Your string contains 'Java, 'Code' or 'String'.");
} else {
System.out.println("I see your does not string contain 'Java', 'Code' or 'String, here is your string:- " + userInput6);
}
声明:
System.OutOfMemoryException: Out of memory.
答案 1 :(得分:0)
由于您正在使用逻辑OR,只要您的viewModel.user().observe(this, x -> {
if (x != null && x.data != null) {
viewModel.items(x.data.token).observe(this, result -> {
// use result
});
}
});
检查为真,则整个条件为真。您希望所有检查都为真,因此您需要使用逻辑AND(contains
)代替
正如@mk指出的,你还有另一个问题。看看:
&&
您可以小写字符串,然后针对包含大写字符的字符串进行检查。您刚刚删除了全部大写,因此检查将始终失败。
答案 2 :(得分:-1)
另外,你可以使用regexp:)
boolean notContains(String in) {
return !Pattern.compile(".*((java)|(code)|(string)).*")
.matcher(in.toLowerCase())
.matches();
}
或者只是内联它:
System.out.println("Type in an input, plez?");
String userInput6 = inputScanner.nextLine();
if (!Pattern.compile(".*((java)|(code)|(string)).*")
.matcher(userInput6.toLowerCase())
.matches()) {
System.out.println("I see your does not string contain 'Java', 'Code' or 'String, here is your string:- " + userInput6);
} else {
System.out.println("Your string contains 'Java, 'Code' or 'String'.");
}