我对 Java 还很陌生,正在尝试检查用户名是否存在脏话。 我已经创建了一个包含 4 个脏话的数组,现在我想检查用户输入的坏词,但是,我不知道如何形成 if 语句来检查数组中的所有项目。
public static void main(String[] args) {
Scanner character = new Scanner(System.in);
String[] profanities = {"asshole", "ass", "idiot", "stupid"};
System.out.println("What is your name");
String userName = character.next();
if (userName.contains(profanities[])) { //This Part is what i dont understand
System.out.println("Invalid name");
}
else {
System.out.println("Valid Name!");
}
}
答案 0 :(得分:0)
使用 Set 而不是 ArrayList,然后使用 profanities.contains(userName)
。请注意,用户应该输入与亵渎语言集中相同的亵渎语言,以便 if 语句评估为真。如果用户输入诸如“userjackass”之类的内容,则不会被归类为脏话。
答案 1 :(得分:0)
无需进一步创建 ipconfig -all
,只需创建原始数组即可。由于这组无效名称将预先设置/已知,因此 Collections
操作只能在程序启动时执行一次。
一旦排序,只需为每个输入调用 sort
:
binarySearch
这避免了创建集合、列表或循环的实现。
如果无效名称集可能会更改(例如,添加新名称),则需要进行第二次 Arrays.sort(profanities); //--> if profanities is a static set, call this just once.
if (Arrays.binarySearch(profanities,username)>=0)
System.out.println("Invalid name");
else
System.out.println("Valid Name!");
//binarySearch will return >=0 if the value is found
操作。在这种情况下,提供的其他答案将是更好的方法。使用此方法如果无效名称集是已知的并且不会在程序执行期间更改。
答案 2 :(得分:0)
我会这样做..
import java.util.Scanner;
public class Profanities {
public static void main(String[] args) {
boolean allow = false;
Scanner scan = new Scanner(System.in);
String[] profanity_list = {"asshole", "ass", "idiot", "stupid"};
String test_input = "";
// do while until allow equals true..
while (!allow) {
System.out.println("What is your name?");
test_input = scan.nextLine();
byte memory = 0;
// compare the input with the elements of the array..
for (int pos = 0; pos < profanity_list.length; pos++) {
if (test_input.contains(profanity_list[pos]) == true) {
System.out.println("Invalid name. Let's start again..");
memory = 1;
break;
}
}
// if memory equals 1, it means that a profanity was found..
if(memory == 0){allow = true;}
}
String name = test_input;
System.out.println("That is a valid name. Thanks.");
}
}
答案 3 :(得分:-1)
试试:
for(String string : profanities)
if(userName.contains(string))System.out.println("invalid name");
else System.out.println("valid name");
注意:for
循环遍历数组中的每个条目并检查该条目是否包含在 userName 中
答案 4 :(得分:-1)
不要使用字符串数组,而是使用字符串列表,您可以从中轻松使用 contains 方法。我用 List 修改了你的代码,参考下面
public static void main(String[] args) {
Scanner character = new Scanner(System.in);
//String[] profanities = {"asshole", "ass", "idiot", "stupid"};
ArrayList<String> profanities = new ArrayList<String>();
profanities.add("asshole");
profanities.add("ass");
System.out.println("What is your name");
String userName = character.next();
if (profanities.contains(userName)) { //This Part is what i dont understand
System.out.println("Invalid name");
}
else {
System.out.println("Valid Name!");
}
}
使用 List 的另一个优点是,它是动态的,您将来可以毫无问题地向其中添加元素