【问题标题】:how to use regex in multiline input如何在多行输入中使用正则表达式
【发布时间】:2021-04-19 05:51:46
【问题描述】:

/* 语言 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。

【问题讨论】:

    标签: java regex string


    【解决方案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}[X]");  // Change
                
                Matcher m1 = p1.matcher(sc.nextLine());
                
                boolean b1 = m1.matches();
                
                if(b1){
                    ++x;
                }else{
                    --x;
                }
            }
            System.out.println(x);
        }
    }
    

    更新了您的代码。您忘记在 ++ 之后添加 [X],因为您的模式不匹配,并且每次 b1 变为 false 并导致 --x;

    你还需要考虑 X++,否则你会得到 WA

    【讨论】:

      【解决方案2】:

      写得真好:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-04-03
        • 2018-05-22
        • 1970-01-01
        • 2011-09-28
        • 1970-01-01
        • 2020-02-13
        • 1970-01-01
        相关资源
        最近更新 更多