首页 > 解决方案 > 退货声明让我感到困惑。不确定如何使用它

问题描述

嘿伙计们,我对编程有点陌生。我在高中做了一点,我正在努力重新开始。我现在正在使用 Codecademy 再次学习 Java。因为我会努力保持活跃,所以我认为这里的帐户是明智的。

我现在正在学习 Return 声明,并且我正在让它正常工作......我可以继续无知,假装我知道发生了什么,但我不知道。我在这里使用 Return 语句的任何地方都让我感到困惑,因为感觉好像我可以将正确数据类型的任何实例/变量放入 return 语句中,并且代码将不受影响地运行。

例如我将energyReport方法下的return语句从return batteryLevel更改为return chargePak虽然这里没有参数并且我在这个方法中使用的实例是batteryLevel. 请批评我的代码,我总是愿意学习,我知道我是新手。告诉我我做错了什么!帮助我学习,非常感谢!

我的代码:

public class Droid {
String name;
int batteryLevel;
int chargePak;

  //constructor
  public Droid(String droidName){
    name = droidName;
    batteryLevel = 100;
    chargePak = 400;
  }

  //toString method
  public String toString() {
    return "Meet " + name + " our newest droid!";
  }

  //Perform Task method
  public void performTask(String task) {
    System.out.println(name + " is performing " + task + "!");
    batteryLevel = batteryLevel - 10;
  }

  //Energy Report
  public int energyReport() {
    System.out.println("You have " + batteryLevel + "% remaining.");
   return chargePak;
  }

    //Energy Report for chargepak
  public int pakReport() {
    System.out.println("You have " + chargePak + "% remaining in your Charge Pak.");
   return chargePak;
  }

  //Energy Transfer
  public void chargeDroid(int charge) {
    chargePak = chargePak - charge;
    batteryLevel = charge + batteryLevel;
    System.out.println("Charging...\n" + "You now have " + batteryLevel + "% battery!");
  }

  //Main Method
  public static void main(String[] args){
    Droid codey = new Droid("Codey");
    System.out.println(codey);
    codey.energyReport();
    codey.performTask("Jump");
    codey.energyReport();
    codey.performTask("Punch");
    codey.performTask("Punch");
    codey.performTask("Kick");
    codey.performTask("Dab");
    codey.energyReport();
    codey.chargeDroid(20);
    codey.chargeDroid(20);
    codey.pakReport();
  }
}

标签: java

解决方案


首先,我想对这种态度表示敬意。您实际上是在尝试充分了解您正在学习的内容,并且不要让您觉得奇怪的事情。这是要走的路。

现在回答:

return从函数返回一个值给它的调用者。例如:

public static int giveMeTheAnswer () {
  return 42;
}

public static void main (String[] args) {
  int answer = giveMeTheAnswer();
  System.out.println("The answer is " + answer); // Prints "The answer is 42"
}

Java 还允许您忽略返回值,在这种情况下它只是被丢弃:

public static int giveMeTheAnswer () {
  return 42;
}

public static void main (String[] args) {
  giveMeTheAnswer(); // This call is now useless
  System.out.println("The answer was lost...");
}

在您的情况下,您的函数实际上有副作用,即将内容打印到控制台本身。这样,它们实际上不必返回任何东西,因为您一开始并没有使用返回值,而是调用函数只是为了它们的副作用。

如果你不需要返回值,你可以将函数声明为返回void,然后你可以简单地使用return;返回(没有值),或者return完全省略(因为在函数的末尾它会自动返回):

public static void printMeTheAnswer () {
  System.out.println("The answer is 42");
}

public static void main (String[] args) {
  printMeTheAnswer();
}

推荐阅读