Java—使用“Java”;。包括「;以相反的方式
我希望能够打印一个不包含单词“Java”、“Code”或“string”的字符串,尽管我不确定如何实现这一点,因为我认为这可以通过使用“!”来实现(不是)。然而,事实并非如此,因为尽管包含了我想禁止的单词,字符串仍然被打印出来 任何关于如何实现这一点的建议都将不胜感激,提前感谢Java—使用“Java”;。包括「;以相反的方式,java,contains,Java,Contains,我希望能够打印一个不包含单词“Java”、“Code”或“string”的字符串,尽管我不确定如何实现这一点,因为我认为这可以通过使用“!”来实现(不是)。然而,事实并非如此,因为尽管包含了我想禁止的单词,字符串仍然被打印出来 任何关于如何实现这一点的建议都将不胜感激,提前感谢 System.out.println("Type in an input, plez?"); String userInput6 = inputScanner.nextLine(); if (!userInput6.t
System.out.println("Type in an input, plez?");
String userInput6 = inputScanner.nextLine();
if (!userInput6.toLowerCase().contains("Java") || !userInput6.toLowerCase().contains("Code") || !userInput6.toLowerCase().contains("String")) {
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'.");
}
我认为这可以通过使用“!”来实现(不是)
是的。您只是没有将其正确应用于您的情况:
您可以从以下语句开始:
userInput6.toLowerCase().contains("java") ||
userInput6.toLowerCase().contains("code") ||
userInput6.toLowerCase().contains("string")
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);
}
它检查输入是否包含这些内容,并且您希望否定此语句
您可以将整个语句用括号(()
)括起来,然后将其取反:
或者应用于析取的否定,即a | | b
的否定为!a&&!b
因此,如评论中所述,您需要
!userInput6.toLowerCase().contains("java") &&
!userInput6.toLowerCase().contains("code") &&
!userInput6.toLowerCase().contains("string")
相反
您的语句只是检查字符串是否不包含至少一个子字符串。这意味着只有当字符串包含所有这些字符串时,检查才会失败。使用|
,如果任何操作数为true
,则整个语句为true
此外,还指出您要检查的字符串应该完全是小写的。否则,您将检查.toLowerCase
d字符串是否包含大写字符,该字符总是false
一种更简单的方法是颠倒您的if
语句:
userInput6.toLowerCase().contains("java") ||
userInput6.toLowerCase().contains("code") ||
userInput6.toLowerCase().contains("string")
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);
}
- 由于您使用的是逻辑OR,只要
检查为true,整个条件都为true。您希望所有检查都为true,因此需要使用逻辑AND(包含的一个
)&&
- 正如@mk指出的,您还有另一个问题。看看:
将字符串小写,然后对照包含大写的字符串进行检查。不过,您刚刚删除了所有大写字母,因此检查将始终失败userInput6.toLowerCase().contains("Java")
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'.");
}
您需要AND(&&),而不是OR(| |)。您要检查是否不包含所有内容,而不是至少包含其中一项内容。
!userInput6.toLowerCase().contains(“Java”)
-“Java”
在您将其转换为小写后包含大写字符(与其他调用相同)。您了解toLowerCase()
的功能吗?你为什么要用它?toLowerCase().contains(“code”)
永远是假的“@StephenP,是的,但只剩下一个了。原来的问题解决了:)