【发布时间】:2014-03-10 19:26:30
【问题描述】:
我应该用 Java 编写一个程序。我收到了一个包含
的文本文件我是哈坎。我的电子邮件地址是 hakan@cs.uh.edu,你叫什么名字?嗨,我的名字是 Tarikul,我最喜欢的电子邮件地址是 tarikul2000@cs.uh.edu
我应该将 tarikul2000@uh.edu 和 hakan@cs.uh.edu 并根据他们是否有子域(“cs”部分还有其他可能性)来组织它们并将其存储到类中Email 和 UniversityEmail 类型的数组。然后我将使用 0-7 的用户输入,并根据输入打印出一组不同的信息 我已经创建了课程,但我不知道如何获取信息然后对其进行排序。 可能的子域是
1.艺术 2. 切 3.化学 4. 心电图 5.cs 6. 埃格 7. 政策
import java.io.* ;
import java.util.HashSet;
import java.util.Scanner;
import java.io.PrintWriter;
import java.io.FileOutputStream;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Try {
public static void main(String[] args) {
Email [] storage;// email is a class that was made to store the data
storage = new Email [99];
UniversityEmail[] save;
save= new UniversityEmail[99];
HashSet<String> hs = new HashSet<>();
Scanner input= null;
PrintWriter output= null;
try {
input= new Scanner("inputemails.txt");
output= new PrintWriter("outputemails.txt");
}
catch (FileNotFoundException e) {
System.out.print("File not found");
System.exit(0);}
String line = null;
while(input.hasNextLine())
{
fillEmailsHashSet(line, hs);
}
input.close();
output.close();
}
public static void fillEmailsHashSet(String line,HashSet<String> container){
Pattern p = Pattern.compile("([\\w\\-]([\\.\\w])+[\\w]+@([\\w\\-]+\\.)+[A-Za-z]{2,4})");
Matcher m = p.matcher(line);
while(m.find()) {
container.add(m.group(1));
}
}}
这些是我收到的关于这个程序的实际说明
- 连接到外部输入文件。输入文件的名称将始终为 inputemails.txt,并且 因此请不要在程序中询问文件名。
- 检测文件中的电子邮件地址。
- 如果电子邮件没有子域,请为该电子邮件创建电子邮件对象。
- 如果电子邮件有子域,请为该电子邮件创建 UniversityEmail 对象。
- 请将所有电子邮件存储在同一个(一个)数组列表中。
- 将文件中的所有邮件复制到数组列表后,请询问用户是什么类型的邮件 包含在输出文件中。如果用户输入0,请填写没有子域的邮件 数组列表。请注意,输出文件必须以表示电子邮件数量的数字开头 在文件中。如果用户输入的数字介于 1-7 之间,请填写来自特定部门的所有电子邮件 在输出文件中。请注意,输出文件必须以数字开头,表示 文件中的电子邮件。用户只能输入 0 到 7 之间的一个整数
我决定也包括我的其他课程信息,第一个是电子邮件课程
public class Email {
public String username;
public String email1;
public String extension;
public Email()
{
//default construntor
}
public Email(String U, String Em , String Ex)
{
username =U;
email1= Em;
extension=Ex;
}
}
这是 UniversityEmail 类的代码
public class UniversityEmail extends Email {
public String department;
public int code;
public UniversityEmail()
{//default constructor
}
public UniversityEmail(String U, String Em , String Ex
, String Dep,int C)
{super( U, Em , Ex);
department= Dep;
code=C;
}
}
【问题讨论】:
-
我阅读了您的帖子两次,但实际上仍然不知道您的要求。你的问题到底是什么?
-
我怎样才能组织不同的电子邮件部分并将其放置到正确的数组中。到目前为止,我会在文本中找到电子邮件,但据我所知
-
这听起来可能有点居高临下,但是,也许是一个 if 语句?我在想 contains() 方法或类似方法。我假设您提供的示例文本中的两个示例都进入了大学电子邮件的数组。子域是你的哨兵值,所以条件是, if (theEmail.contains(subdomain)) storeWithUniversityEmails else storeElsewhere