我是编程新手,必须做一些功课,但我被卡住了。我需要这样做:
作为开发人员,编写一个程序,从字符串数组中搜索用户输入的字符串。
问题陈述的背景:您有一系列员工的电子邮件ID。作为一名程序员,编写一个程序来搜索用户输入的电子邮件ID。
我有我的ArrayList,但现在我想能够在控制台中输入电子邮件地址&程序应该检查输入的电子邮件地址是否在我的数组列表中。有人能帮帮我吗?我找不到这样的东西(也许我也不知道如何寻找答案(我很乐意得到任何帮助!
而不是像我在这里那样在语法中搜索元素,我想让系统询问用户的电子邮件ID并搜索我的ArrayList。如果电子邮件ID在Array List中,则输出应为:"电子邮件ID"+searcElement+";找到";否则";电子邮件ID"+searcElement+";未找到";
package searchElement;
import java.util.ArrayList;
public class searchElement {
public static void main(String[] args) {
ArrayList<String> emailID = new ArrayList<String>();
emailID.add("simon.hasler@gmx.com");
emailID.add("leonie.klein@gmx.com");
emailID.add("lea.hoch@gmx.com");
emailID.add("max.neumann@gmx.com");
emailID.add("henrik.fiesler@gmx.com");
emailID.add("laura.kramm@gmx.com");
emailID.add("sabine.neuwirth@gmx.com");
String searcElement = "simon.hasler@gmx.com";
for(int i=0; i<emailID.size(); i++) {
System.out.println(emailID.get(i));
if(searcElement==emailID.get(i)) {
System.out.println("n");
System.out.println("email ID" + searcElement + "found");
break;
}
}
}
}
首先,您需要要求用户在控制台中输入字符串。为此,您需要使用扫描仪:
// Using Scanner for Getting Input from User
Scanner sc = new Scanner(System.sc);
// Get the input back for a string
String stringInput = sc.nextLine();
System.out.println("You entered string " + stringInput);
// Get the input back if your emailId is an int
int intInput = sc.nextInt();
System.out.println("You entered integer " + intInput);
然后,要扫描您的arrayList并输出结果本身(无论是否找到结果,都不是布尔值(,只需在列表中循环并使用contains方法:
for (String element : emailID){
if (element.contains(stringInput)){
System.out.println(element);
}
}
如果你是编程新手,我建议你检查一下那些扫描仪,它包含的东西,这样你就可以了解它是如何工作的,而不是在没有任何理解的情况下复制粘贴它。
当您对编程更加熟悉时,另一种达到这一结果的方法是将Java流过滤器与Lambda一起使用。
我希望这能有所帮助。
java.util.Scanner用于获取控制台输入
package searchElement;
import java.util.ArrayList;
import java.util.Scanner;
public class searchElement {
public static void main(String[] args) {
ArrayList<String> emailID = new ArrayList<String>();
emailID.add("simon.hasler@gmx.com");
emailID.add("leonie.klein@gmx.com");
emailID.add("lea.hoch@gmx.com");
emailID.add("max.neumann@gmx.com");
emailID.add("henrik.fiesler@gmx.com");
emailID.add("laura.kramm@gmx.com");
emailID.add("sabine.neuwirth@gmx.com");
// new code
String searcElement = null;
System.out.println("Enter the email to search");
Scanner sc = new Scanner(System.in);
searchElement = sc.NextLine();
if (searchElement == null) {
System.out.println("You haven't entered an email");
return;
}
for(int i=0; i<emailID.size(); i++) {
System.out.println(emailID.get(i));
if(searcElement==emailID.get(i)) {
System.out.println("n");
System.out.println("email ID" + searcElement + "found");
break;
}
}
}
}
使用ArrayList.contains和Scanner。
Scanner input = new Scanner(System.in);
System.out.println("Enter email: ");
String searcElement = input.nextLine(); //Should probably be "searchElement" right?"
if(emailID.contains(searcElement)){
return "email ID" + searcElement + "found";
}
else{
return "email ID" + searcElement + "not found";
}
这里还有一个解决方案,使用正则表达式进行验证并流式传输以检查是否存在
String searchElement;
System.out.println("E-mail: ");
Scanner scanner = new Scanner(System.in);
searchElement = scanner.nextLine();
String regex = "^(.+)@(.+)$";
Matcher matcher = Pattern.compile(regex).matcher(searchElement);
if (matcher.matches() && emailID.stream().anyMatch(mail -> mail.equals(searchElement))) {
System.out.println(searchElement + " = is present");
} else {
System.out.println("Not a valid or is not present");
}