当前位置: 首页 > 知识库问答 >
问题:

火星探测车的简单例子

尤茂材
2023-03-14

机器人从坐标(0,0)开始,同时指向北方。

  • 用户输入=字符串,例如lrlllfrrrfrf。这里L=左点,R=右点,F=向前移动一个单位
  • 输出=(5,6)=机器人的最终坐标

我使用Java Scanner类从用户那里获取输入。但输出是空白的。以下是我的完整代码:

public static void printLocation() {

//      index 0 = North, index 1 = East, index 2 = South, index 3 = West

    System.out.println("Enter the sequence"); //eg - LRFFRRLRLF
    Scanner scan = new Scanner(System.in);
    int index=0, x=0, y=0;

    while(scan.hasNext()) {

        String token = scan.next();
        if(token.equals("R")) {
            index=index+1;
        }
        if(token.equals("L")) {
            index=index-1;
        }

        if(index > 3 && index%3 !=0) {
            index = index%3-1;
        }
        else if(index > 3 && index%3 == 0) {
            index = 3;
        }

        if(token.equals("F")) {
            if(index == 0) {
                y=y+1;
            }
            if(index == 1) {
                x=x+1;
            }
            if(index == 2) {
                y=y-1;
            }
            if(index == 3) {
                x=x-1;
            }
        }
    }
    System.out.println("("+x+","+y+")");
}

我做错了什么?请帮点忙。

共有2个答案

陆飞鸿
2023-03-14

您的输出为空,因为当您使用scan时,程序希望输入另一个输入。hasNext()。其中一种方法是使用scan读取整个字符串。nextLine(),将其转换为字符数组,然后逐个符号对其进行分析。

public static void printLocation() {

    // index 0 = North, index 1 = East, index 2 = South, index 3 = West
    System.out.println("Enter the sequence"); //eg - LRFFRRLRLF
    Scanner scan = new Scanner(System.in);
    String sequence = scan.nextLine();

    char[] sequenceArray = sequence.toCharArray();

    int index = 0, x = 0, y = 0;
    int i = 0;
    while (i < sequenceArray.length) {       

        String token = String.valueOf(sequenceArray[i]);
        i++;

        if (token.equals("R")) {
            index = index + 1;
        }
        if (token.equals("L")) {
            index = index - 1;
        }           

        if (index > 3 && index % 3 != 0) {
            index = index % 3 - 1;
        } else if (index > 3 && index % 3 == 0) {
            index = 3;
        }

        if (token.equals("F")) {
            if (index == 0) {
                y = y + 1;
            }
            if (index == 1) {
                x = x + 1;
            }
            if (index == 2) {
                y = y - 1;
            }
            if (index == 3) {
                x = x - 1;
            }
        }            
    }
    System.out.println("(" + x + "," + y + ")");
}

然而,您应该自己检查代码的逻辑。我不能确定它是否正确。如果输入lrlllfrrrfrf,输出将为(1,1)。所以自己测试一下。

南门洋
2023-03-14

你需要像这样读取输入字符串的内容

String pathSequence = sc.next(); 

然后迭代字符串路径序列中的每个字母

 类似资料:
  • 本文向大家介绍用Python抢火车票的简单小程序实现解析,包括了用Python抢火车票的简单小程序实现解析的使用技巧和注意事项,需要的朋友参考一下 利用Python制作自动抢火车票小程序,过年再也不要担心没票了! 前言 每次过年很多人都会因为抢不到火车票而回不了家,所以小编利用Python写了一个自动抢火车票的工具,希望大家能抢到火车票,回家过个好年! 我本来想自己写一个练练手的,但是转眼一想,P

  • 有一些类似的问题,比如这个和这个,但他们不能给我足够的帮助。下面是我的一段代码。 下面是一段输出。 我想以排序的形式输出。我尝试了

  • 基于网络请求,接受xml,并解析返回的xml,从而得到列车车次信息。 [Code4App.com]

  • 本文向大家介绍WordPress 简单的例子,包括了WordPress 简单的例子的使用技巧和注意事项,需要的朋友参考一下 示例 这个过滤器非常有用。开发人员的常见问题之一是如何在他们开发的插件中包含模板。 在wordpress使用wp层次结构在活动的子主题/父主题中找到适当的模板后,将立即应用该过滤器。 小心定义何时要修改模板路径。在下面的示例中,代码检查以查看当前页面是否是我们的自定义帖子类型

  • 让我们写一个计算阶乘的函数.对于阶乘的数学定义如下: n! = 1 (当 n==0 时) = n * (n-1)! (其它情况) 在Ruby里,可以这样来写: def fact(n) if n == 0 1 else n * fact(n-1) end end 你可能会发现 end 的反复出现,

  • 本文向大家介绍简单的php购物车代码,包括了简单的php购物车代码的使用技巧和注意事项,需要的朋友参考一下 本文介绍一个php实现的购物车代码,功能实现完整,具有一定的参考价值 这里我们为你提供个简单的php购物车代码,从增加购物产品与发生购买了,在商城开发中,这个功能是少不了的 具体分析如下: 对购物车里商品的操作大体上有以下几个:添加商品,删除商品,以及提交订单; 方法本质是:把session