【问题标题】:How would I write a toString and reduce duplicate outputs?我将如何编写一个 toString 并减少重复输出?
【发布时间】:2021-03-22 20:41:26
【问题描述】:

所以,我创建了一个简单的应用程序,用于沿着电线移动虫子。虽然代码运行良好(大部分情况下),但我遇到了一些问题。

当到达线的末端时,程序结束得很好,但是我得到一个双重输出,当它到达末端时它从电线上掉下来了。

我应该为此编写一个 toString,但我有点难以理解为什么以及如何去做。

如果有人能提供帮助,我将不胜感激。

import java.util.Scanner;

public class ClassPracticeMain {
    public static void main(String [] args) {

        Scanner input = new Scanner(System.in);

        int userInput;

        Bug bug1 = new Bug();
        bug1.setInitialPosition();
        bug1.setInitialDirection();
        System.out.println("Your starting position is " + bug1.initialPosition
                + " and you are facing " + bug1.getCurrentDirection()
        );
        while (bug1.getExit(1) != 0) {
            System.out.println("Which way would you like to move? 1 for left/ 2 for right or 0 for exit");
            userInput = input.nextInt();
            bug1.move(userInput);
            bug1.getCurrentDirection();
            bug1.getCurrentPosition();
            System.out.println("You are now at " + bug1.currentPosition + " and you are facing " + bug1.getCurrentDirection());
            bug1.getExit(userInput);

        }
    }
}

public class Bug {
    final int WIRELEFTEND=-15;
    final int WIRERIGHTEND=15;
    int initialPosition=0, currentPosition=0, direction,exit=1;
    String currentDirection;
    String left = "left";
    String right = "right";

    public int setInitialPosition(){
        return initialPosition;
    }

    public int setInitialDirection(){
        direction=1;
        return direction;
    }

    public int getCurrentPosition(){
        return currentPosition;
    }

    public String getCurrentDirection(){
        if (direction== 1){
            currentDirection=left;
        } else if (direction == 2){
            currentDirection=right;
        }
        return currentDirection;

    }

    public int move(int move){
        if(move==1 && direction==1){
           currentPosition=currentPosition-1;
           return currentPosition;

        } else if (move==1 && direction==2){
            direction=1;
            return currentPosition;

        } else if (move==2 && direction==1){
            direction=2;
            return currentPosition;

        } else if (move==2 && direction ==2){

            currentPosition=currentPosition+1;
            return currentPosition;
        }

        return 0;
    }

    public int getExit(int exit){
        if(currentPosition<(WIRELEFTEND)||currentPosition>WIRERIGHTEND){
            System.out.println("You've fallen off the wire... Oh no!");
            exit=0;
        } else{
            exit=exit;
        }
        return 1;
    }

}

【问题讨论】:

  • 发布您的输出示例

标签: java output tostring


【解决方案1】:

你可能想写

public int getExitStatus(){
    if(currentPosition<(WIRELEFTEND)||currentPosition>WIRERIGHTEND){
        System.out.println("You've fallen off the wire... Oh no!");
        return 0;
    } 
    return 1;
}

而不是您当前的 getExist(int) 函数。它总是返回 1,设置 exit 参数没有任何作用。

【讨论】:

  • 非常感谢。我很快就会看一看。希望你的一天过得愉快!
猜你喜欢
  • 2013-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-14
  • 2016-12-04
相关资源
最近更新 更多