Java 具有两个参数但不同时使用这两个参数的Void函数

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 { /*

第一个技术挑战,一个机器人组织现在有了一个安卓平台而不是乐高。我的团队正在向java过渡,但我有一个简单的问题。如果我的函数有两个参数
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
    @LeoForney
    double
    是一个原语,
    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);
        }
    }