java - 退货声明让我感到困惑。不确定如何使用它
问题描述
嘿伙计们,我对编程有点陌生。我在高中做了一点,我正在努力重新开始。我现在正在使用 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();
}
}
解决方案
首先,我想对这种态度表示敬意。您实际上是在尝试充分了解您正在学习的内容,并且不要让您觉得奇怪的事情。这是要走的路。
现在回答:
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();
}
推荐阅读
- c# - Visual Studio-Code 找不到库
- mongodb - 在嵌入文档数组中查找引用的文档
- caching - 为什么我的 perf_event_open() 只能使用 509 次?
- c# - Git Diff 风格程序 C#
- api - Microsoft Graph - 长期访问 OneDrive API(刷新令牌?)
- java - 这个 IntStream 分区实现真的不是线程安全的吗?
- vb.net - 使用 (LINQ) 将 DataClass 的所有列名放入字符串数组
- python - 导出 CSV 文件并更改逗号后的位数并对 Verts 求和
- reactjs - 我如何解决意外令牌
- android - 将“Delegates.observable”与观察者列表一起使用