Java 具有两个参数但不同时使用这两个参数的Void函数
第一个技术挑战,一个机器人组织现在有了一个安卓平台而不是乐高。我的团队正在向java过渡,但我有一个简单的问题。如果我的函数有两个参数Java 具有两个参数但不同时使用这两个参数的Void函数,java,android,null,arguments,robotics,Java,Android,Null,Arguments,Robotics,第一个技术挑战,一个机器人组织现在有了一个安卓平台而不是乐高。我的团队正在向java过渡,但我有一个简单的问题。如果我的函数有两个参数power1和power2,并且两个参数都可以设置为双精度,但如果未指定第二个参数,则它应仅使用power1变量运行两个电机。这是我的密码: package com.qualcomm.ftcrobotcontroller.opmodes; public class BasicFunctions extends HardwareAccess { /*
power1
和power2
,并且两个参数都可以设置为双精度,但如果未指定第二个参数,则它应仅使用power1
变量运行两个电机。这是我的密码:
package com.qualcomm.ftcrobotcontroller.opmodes;
public class BasicFunctions extends HardwareAccess {
/*
This file lists some basic funcions on the robot that we can use without typing large amounts of code.
To use this code in the opmode add "extends BasicFunctions" to the end of the class line
*/
public void setDriveMotorPower(double power1, double power2) {
if (power2 = null) {
motorLeft.setPower(power1);
motorRight.setPower(power1);
}
motorLeft.setPower(power1);
motorRight.setPower(power2);
}
public void init() {
}
@Override
public void loop() {
}
}
更新:以下是Android Studio的屏幕截图:
如果一个函数有两个参数,你必须同时发送它们,但还有一个想法:如果你不想使用
power2
,例如,你可以将一些不可能发生的值传递给它,比如-1或根据你的情况,然后检查如果(power2==-1)
,这比检查null要好。顺便说一下,for的方法
.setPower()
将被调用4次,因为您刚刚使用了if
而不是if-else
。应该是
motorLeft.setPower(power1);
if (power2 == null) { // or -1 like I said before
motorRight.setPower(power1);
} else {
motorRight.setPower(power2);
}
这里有几个问题:
double
不能为null
,您必须使用包装器李>
=
是赋值运算符。使用=
运算符完成相等性测试if
之后使用的是power1
和power2
,无论是否执行。相反,您可能打算使用else
子句:问题是什么?既然代码没有运行,如何让它工作你的意思可能是:
power2==null
是的,我忘了将=改为==而且我忘了else语句。。。但是顺便说一下,代码说double不能为nullstill@LeoForney我在第一点上注意到了这一点,但忽略了修复代码-您应该使用Double
,而不是Double
。看我编辑的答案。哦,好的。。。现在它可以工作了,但是double
和double
@LeoForneydouble
是一个原语,double
是它的包装类。你可以在中阅读更多关于它的内容。一些数字也给出了浮点数,我如何确保如果它是浮点数,我可以将它转换为双精度数并传递它?另外,当我给函数一个0.73的幂时,它说,Double不能应用于Double
实际上,如果通过.setPower()函数传递-1,它会使电机以100%的功率向后旋转。另外,您的代码需要一个双等号,比如=
,它仍然表示双等号不能为空:(@LeoForney一点问题都没有,我说了-1,不是,您必须使用-1,“因为在许多情况下-1是不可能的值”。谢谢您关于“=”的注释:)检查null比检查某个随机整数更有意义。
public void setDriveMotorPower(Double power1, Double power2) {
motorLeft.setPower(power1);
if (power2 == null) {
motorRight.setPower(power1);
} else {
motorRight.setPower(power2);
}
}