首页 > 解决方案 > 如何在多行输入中使用正则表达式

问题描述

/* 语言 Bit++ 中的语句是一个序列,由一个操作和一个变量 x 组成。该语句不带空格,即只能包含字符“+”、“-”、“X”。执行一个语句意味着应用它包含的操作。

操作 ++ 将变量 x 的值增加 1。

操作 -- 将变量 x 的值减 1。 */

import java.util.regex.*;
import java.util.Scanner;

public class Bit{
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        
        int n = sc.nextInt();
        sc.nextLine();
        int x = 0;
        
        while(n-->0){
            Pattern p1 = Pattern.compile("[+]{2}");
            Matcher m1 = p1.matcher(sc.nextLine());
            boolean b1 = m1.matches();
            
            if(b1){
                ++x;
            }else{
                --x;
            }
        }
        System.out.println(x);
    }
}

对于输入

2

++x

- X

输出应该是 0 我的代码输出为 -2。

代码部队 282A。

标签: javaregexstring

解决方案


它写得很明智:

我有一个选择用正则表达式解决的问题。现在我有两个问题。

如果您不需要,请不要使用正则表达式:

while (n-->0) {                
    if (sc.nextLine().contains("++")) {
        ++x;
    } else {
        --x;
    }
}

推荐阅读