java if/else语句命令字符串

qzwqbdag  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(501)

所以我是一个新的编码和采取的课程,它现在。我试图让我写的代码像一个字符串,使海龟图像移动或绘制的命令的基础上,我使用了for循环,但每当我输入命令字符串,它执行一个奇怪的顺序运动。

  1. int stringLength = commands.length();
  2. for(int i=0; i<stringLength ;i++) {
  3. if (thigny.contains("F")) {
  4. rabbit.forward(move);
  5. } else if (thigny.contains("f")) {
  6. rabbit.penUp();
  7. rabbit.forward(move);
  8. } else if (thingy.contains("+")) {
  9. rabbit.turnLeft();
  10. } else if (thingy.contains("-")) {
  11. rabbit.turnRight();
  12. }
  13. }
vzgqcmou

vzgqcmou1#

在循环的每次迭代中,检查字符串是否包含某些字符,无论其位置如何。相反,您应该遍历字符串的字符并逐个检查它们。例如。:

  1. for(int i = 0; i < stringLength; i++) {
  2. char ch = commands.charAt(i);
  3. if (ch == 'F') {
  4. rabbit.forward(forwardPixels);
  5. } else if (ch == 'f') {
  6. rabbit.penUp();
  7. rabbit.forward(forwardPixels);
  8. } else if (ch == '+') {
  9. rabbit.turnLeft();
  10. } else if (ch == '-') {
  11. rabbit.turnRight();
  12. }
  13. }
ohtdti5x

ohtdti5x2#

而不是 contains() 方法尝试使用 commands.charAt(i) . contains方法如果所提供参数的字符串中的任何位置包含,则返回true。这就是为什么你的兔子只做转发我猜。
例子:

  1. for(int i=0; i<stringLength ;i++) {
  2. if (commands.charAt(i)=='F')) {
  3. rabbit.forward(forwardPixels);
  4. } else if (commands.charAt(i)== 'f')) {
  5. rabbit.penUp();
  6. rabbit.forward(forwardPixels);
  7. }
  8. // replace other in same way
  9. ....

相关问题