程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了机器人向上、向下、向左、向右移动任意 4 个方向,具体数字在 1-9 之间大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决机器人向上、向下、向左、向右移动任意 4 个方向,具体数字在 1-9 之间?

开发过程中遇到机器人向上、向下、向左、向右移动任意 4 个方向,具体数字在 1-9 之间的问题如何解决?下面主要结合日常开发的经验,给出你关于机器人向上、向下、向左、向右移动任意 4 个方向,具体数字在 1-9 之间的解决方法建议,希望对你解决机器人向上、向下、向左、向右移动任意 4 个方向,具体数字在 1-9 之间有所启发或帮助;

我在修复此正则表达式时遇到问题

问题:假设机器人可以在四个方向(前进(F),后退(B),左(L),右(R))中的任何一个方向移动,然后是它可以移动的步数方向。它可以走的步数在 1 到 9 之间。

有效操作:F4L1B3、R5F2、B7、L8F2R4B3、L1、R5

无效操作:12、LR、L2J2、K3F5、R12、F6L7R12、B5R8L+、L4-R3

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class extra {
    public static voID main(String[] args){
        ScAnner scn = new ScAnner(system.in);
        System.out.println("Enter the String: ");
        String move = scn.nextline();
        finalposition(movE);
    }

    static voID finalposition(String movE)
    {
        Pattern p = Pattern.compile("([F][1-9]+)|([B][1-9]+)|([L][1-9]+)|([R][1-9])") ;
        Matcher m = p.matcher(movE);
        Boolean b = m.matches();
        if (b)
        {
            System.out.println("Robot is moving");
        }else
            System.out.println("InvalID input");
    }
}

解决方法

有 4 个有效的大写字符,并且所有 4 个字符后面都可以跟一个数字 1-9。这似乎只在 1 次或多次出现的序列中有效,不允许任何其他非空白字符成为字符串的一部分。

您可以将整个交替缩短为匹配 4 个允许字符中的 1 个的字符类,后跟数字 1-9,并作为一个整体重复 1 次或多次。

为了不让其他字符成为匹配的一部分,您可以在左侧和右侧使用空白边界。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char input;
    char char1,char2,char3;
    printf("Please enter a sentance: ");
    scanf(" %c,%c,%c",&char1,&char2,&char3);

    while(1){
        if (char1 == 'E' && char2 == 'C' && char3 == 'E')
            printf("Found ECE!");
        if(char1 == '.' || char2 == '.'|| char3 == '.')
            break;

        scanf(" %c",&input);

        if (input == '.')
            break;

        char1 = char2;
        char2 = char3;
        char3 = input;

    }
    return 0;
}
  • (?<!\S)(?:[FBLR][1-9])+(?!\S) 不直接在左侧断言非空白字符
  • (?<!\S) 重复 1 次或多次匹配 F B L R 和数字 1-9
  • (?:[FBLR][1-9])+ 不直接在左侧断言非空白字符

查看regex demo

在 Java 中

(?!\S)

如果这是从字符串的开头到结尾应该匹配的唯一输入,您也可以使用锚点:

String regex = "(?<!\\S)(?:[FBLR][1-9])+(?!\\S)";

Regex demo

大佬总结

以上是大佬教程为你收集整理的机器人向上、向下、向左、向右移动任意 4 个方向,具体数字在 1-9 之间全部内容,希望文章能够帮你解决机器人向上、向下、向左、向右移动任意 4 个方向,具体数字在 1-9 之间所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:1-94之间