2 whh10010 whh10010 于 2016.09.26 15:40 提问

正则匹配Scanner输入问题

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
Map map = new HashMap();
while (n != 0) {

        while(sc.hasNext("\\d+"+" "+"\\d+")){
            String[] string=sc.nextLine().split(" ");
            map.put(new Integer(string[0]), new Integer(string[1]));
        }
        n--;
    }
    Set<Integer> set = map.keySet();
    for (Integer it : set) {
        int value = map.get(it);
        System.out.println(it + " " + value);
    }

}

}
我的目的是从键盘输入n个键值对,要求输入是键 空格 值,如1 15,然后,找出键值相同的元素,去重,重新按照之前格式输出,可是我的正则表达式为什么不匹配,写的不对吗,老是进不去while(sc.hasNext("\d+"+" "+"\d+"))循环体,只是为什么?

2个回答

qq_29453059
qq_29453059   2016.09.26 17:13

空白字符的正则表达式不是(" ")这样的。是\s(小s)

qq_29453059
qq_29453059 回复枫~: Scanner sc = new Scanner(System.in);
接近 2 年之前 回复
whh10010
whh10010 \\d+\\s\\d+ 我是这样换的
接近 2 年之前 回复
whh10010
whh10010 换了,还是进不去啊
接近 2 年之前 回复
qq_29453059
qq_29453059   2016.09.27 12:20

Scanner sc = new Scanner(System.in);

    String regex = "^\\d+\\s+\\d+";
    //   "\\d+":表示一个或多个数字。
    while (sc.hasNext()) {
        String result = sc.nextLine();
        if (result.matches(regex)) {
            System.out.println(result + ":good");
            //处理
        } else {
            System.out.println(result + ":bad");
        }

    }
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Scanner定界符与使用正则表达式扫描
Scanner定界符与使用正则表达式扫描
从头认识java-11.5 扫描输入(2)-scanner的边界与使用正则表达式扫描
这一章节我们来介绍一下scanner的边界与使用正则表达式扫描。1.scanner的边界上一章节我们提到scanner里面有hasNext方法,可以检测是否还有字符串,其实这个就是边界符,检查字符串的边界。package com.ray.ch11; import java.io.BufferedReader; import java.io.IOException; import java.io.
java 控制台scanner的中文输入问题
这个问题折腾了很久,也不知道对不对,希望有看到的前辈帮忙指正…… 今天在写练习敲代码时,遇到了之前都没有注意到的一个问题,在控制台输入的时候无法输入自己想要的中文内容; 最后经反复测试,发现:有提醒语句输出,提醒接下来要在控制台输入的是什么内容时(前提是String类型,开头 要输入的第一个字符是中文字符),在输入前,要确保是英文字符输入状态,输入一两个英文字符后删除,再转换成中
使用Scanner所遇到的问题
Scanner来自 java.util.Scanner 中。 对于我这种菜鸟来说,Scanner主要是用来进行控制台输入。在学习I/O后,了解到BufferedReader也可以进行控制台输入,但是习惯改不过来了,只能继续用Scanner啦!题外话:使用 BufferedReader 获得控制台输入:BufferedReader br = new BufferedReader(new InputS
常见对象_Scanner获取数据出现的小问题及解决方案
package cn.itcast_03; import java.util.Scanner; /* * 常用的两个方法: * public int nextInt():获取一个int类型的值。 * public String nextLine():获取一个String类型的值。 * * 出现问题了: * 先获取一个数值,再获取一个字符串,会出现问题。 * 主
java使用scanner接受用户输入遇到空格问题的解决
看下面一个例子: package com.io.crazyjava; import java.util.Scanner; public class Test { /** * 吴日辉 */ public static void main(String[] args) throws Exception{ Scanner sca =new Scanner(System.in); Sys
java scanner 接收键盘输入 中文乱码问题
Scanner in = new Scanner(System.in); String s = in.nextLine(); System.out.println(s); 这么接收键盘输入中文,在控制台输出的是乱码。 看了很多方法 包括把整个myeclipse的编码改成了GBK 在scanner输入后 进行编码转换 都没管用 最后看了篇文章找到了解决我这个问题的方法 runas
JAVA中使用Scanner连续输入int和String错误的解决方案
在这段代码中,输入成员ID后并添加后,跳转到一下个循环后,没有输入a,b就输出登陆错误,原因是因为nextInt()只读取了int的数值却没有读取到了换行符。 共有两种解决方案: 一、在nextInt()后再读取一个nextLine(),不做任何的处理 二、用readLine()读取,并用Integer.parseInt()将读取到的字符串转为int型。 import java.uti
Java学习笔记(三)——关于Scanner类在读取字符是跳过的问题
System.out.print("input numbers of the company :"); Numbers=scanner.nextInt(); Company company; company=new Company(Numbers); company.input(); ObjectOutputStream file=new ObjectOutputStream
Java中scanner.next()键盘输入中文乱码以及转码乱码的问题
在写java代码的时候,遇到中文的乱码经常是我们困扰的问题。当我们定义:String s = "欢迎您光临我的CSDN博客";    这个字符串s的编码是什么呢?答案是它跟你的文件编码有关系,当你把文件编码设置为UTF-8,那么它就是UTF-8的。在设置为文件UTF-8后,可以通过:System.out.println(Charset.defaultCharset());    来得到默认的编码,