首页 > 解决方案 > 如何使用可变整数重复方法?

问题描述

一个月前,我刚开始学习如何用 Java 编程。我试图让我的机器人(卡雷尔)发出蜂鸣器的次数仅是“放置”整数中指示的次数,而不是对象的总次数。但是,它不是一个设定的数字,并且karel.putBeeper(put);由于该类未应用于给定类型,因此编译器不会接受它。任何帮助将不胜感激,我开始理解为什么 Stack Overflow 是程序员最好的朋友哈哈。注意:我可能要到明天才会回复任何有用的提示。

import java.io.*;
import java.util.*;
public class Lab09 {
   public static void main(String[]args) {
      Scanner input = new Scanner(System.in);
      System.out.println("Which world?");
      String filename = input.nextLine();
      World.readWorld(filename);
      World.setSize(10,10);
      World.setSpeed(6);
      Robot karel = new Robot(1,1,World.EAST,0);
      int pick=0;
      int put=0;
      for(int i=0; i<8; i++) {
         while(karel.onABeeper()) {
            karel.pickBeeper();
            pick++;
            karel.move();
         }
         for(i=0; pick>i; pick--) {
            put++;
         }
         if(!karel.onABeeper()) {
            karel.move();
         }
         while(karel.onABeeper() && put>0) {
            karel.putBeeper(put);
         }
      }
   }
}

标签: java

解决方案


如果我的问题是正确的,那么您正在尝试putBeeper put时间,这是通过以下代码完成的:

while (karel.onABeeper() && put > 0) {
  karel.putBeeper(put);
}

我在这里看到的问题是您没有将putafter 调用的值更改为putBeeper,因此此while循环将永远不会终止:例如,如果 的值put5第一次循环迭代期间,它将始终保持5,大于0. 此外,正如您所提到的,putBeeper它不接受任何参数,因此尝试put作为参数传递是行不通的——编译器会为您捕获该错误。

如果您的意图是调用putBeeper put时间,那么您可以做的是put在每次调用putBeeper-put最终达到之后递减0,此时您已经putBeeper准确地调用了put时间。由于您刚刚学习 Java 编程,我将把实际的实现留给您作为练习。祝你好运!


推荐阅读