readLine不读取Java

问题描述

我正在学习java.i正在尝试使用regex查找段落中存在的所有唯一电子邮件地址。我的代码正在逐行读取所有输入内容,但最后一行除外。我一直在尝试找出什么问题是但是我不能。我给整数K表示段落中的行数。我给k行数作为输入,我的代码从中找到所有唯一的电子邮件地址。找到所有唯一的电子邮件地址后它们放在araryList中,然后对输出进行排序和打印。

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {
    public static void main(String[] args) {
    int k;
    String result = "";
    Scanner scan = new Scanner(system.in);
    k = scan.nextInt();    //number of lines in a paragraph
    System.out.println("");
    scan.nextLine();
    ArrayList<String> li = new ArrayList<String>();
    Pattern pat = Pattern.compile("\\b[a-zA-Z0-9_.]+\\@[a-z.]+[a-z]+\\b");  //regex to find the email addresses
    for(int iter = 1;iter <=k ; iter++){
        System.out.println("value of iter is "+iter);
        String getline = scan.nextLine();         //reads input lines
        System.out.println(getline);
        Matcher match = pat.matcher(getline);
            while(match.find()){
            String email = match.group(0);
            if(!li.contains(email)){        //if list does not contain the email it adds them
                System.out.println(email);
                li.add(email);
            }
        }
    }
    Collections.sort(li);
    for(String email: li){
        result += email+";";  //removing the semi colon present at the end
    }
    System.out.println(li.size());
    result = result.substring(0,result.length());
    System.out.println(result);
}

}

输入
14
给编辑的信(必须提供完整的通讯地址):
[email protected]
读者编辑:
[email protected]
广告查询(打印):
[email protected]
广告查询(在线):
[email protected]
广告查询(国际):
[email protected]
订阅查询
[email protected]
网站评论
[email protected]

我的输出
iter的值为1
给编辑的信(必须提供完整的通讯地址):
iter的值是2
[email protected]
iter的值是3
读者编辑:
iter的值是4
[email protected]
iter的值是5
广告查询(打印):
iter的值是6
[email protected]
iter的值是7
广告查询(在线):
iter的值是8
[email protected]
iter的值是9
广告查询(国际):
iter的值是10
[email protected]
iter的值是11
订阅查询
iter的值是12
[email protected]
iter的值是13
网站评论
iter的值为14

它读取直到第13行,并等待第14次输入,但是根据我的假设,它应该像以前的行一样从控制台本身读取第14行(例如对于第一iter读取第一行,对于迭代2则读取第二行)第3行读取第3行,依此类推)。为什么它不读取第14行。这很令人困惑。我在哪里错过了逻辑,请简要说明一下,因为我是Java的新手。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)