Java 如何修正车速表学术作业中的错误?

Java 如何修正车速表学术作业中的错误?,java,overriding,Java,Overriding,我不擅长编码,但我在我的机器人课上,被迫使用Java制作了一个速度表应用程序。有很多错误,我只是不知道如何修复它们 一些确切的问题是: 1: location.setUseMericUnits(this.useMetricUnits()); nCurrentSpeed = location.getSpeed() useMetricUnits用红色下划线表示“无法解析方法'useMetricUnits()” useMetricUnits也存在同样的问题

我不擅长编码,但我在我的机器人课上,被迫使用Java制作了一个速度表应用程序。有很多错误,我只是不知道如何修复它们

一些确切的问题是:

1:          location.setUseMericUnits(this.useMetricUnits());
            nCurrentSpeed = location.getSpeed()
useMetricUnits用红色下划线表示“无法解析方法'useMetricUnits()”

useMetricUnits也存在同样的问题

3:    private boolean useMetricUnits() {
        return Sw_metric.isChecked();
useMetricUnits()表示
;预期并返回Sw_metric。isChecked()表示无法从具有无效结果类型的方法返回值

4:   @Override
        public void onRequestPermissionsResult(int requestCode,@NonNull String[] permissions,
        @NonNull int[] grantResults) {
@Override表示此处不允许注释,(int-request表示;expected,@NonNull表示两者都需要标识符)

 private void updateSpeed(CLocation location){
    float nCurrentSpeed = 0;

    if(location != null){
        location.setUseMericUnits(this.useMetricUnits());
        nCurrentSpeed = location.getSpeed();
    }

    Formatter fmt = new Formatter(new StringBuilder());
    fmt.format(Locale.US, "%5.1" , nCurrentSpeed);
    String strCurrentSpeed = fmt.toString();
    strCurrentSpeed =strCurrentSpeed.replace(" ", "0");

    if(this.useMetricUnits()){
        tv_speed.setText(strCurrentSpeed + " km/h");
    }
    else {
        tv_speed.setText(strCurrentSpeed + " mp/h");
}
private boolean useMetricUnits() {
    return Sw_metric.isChecked();
}

    @Override
    public void onRequestPermissionsResult(int requestCode,@NonNull String[] permissions,
    @NonNull int[] grantResults) {
    if(requestCode == 1000) {
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            doStuff();
        } else {
            finish();
        }
    }
}
}}

它应该是一个速度表,我不确定代码出了什么问题。

您要么忘记了
updateSpeed
末尾的else子句的右括号,要么忘记了
updateSpeed
方法的右括号

结果是,
updateSpeed
方法的结尾出现在您发布的代码中倒数第二个括号中,另外两个方法在
updateSpeed
中定义

useMetricUnits
之前添加另一个}可以解决您看到的错误:

...
    else {
        tv_speed.setText(strCurrentSpeed + " mp/h");
    }
}

private boolean useMetricUnits() {
    return Sw_metric.isChecked();
}

@Override
public void onRequestPermissionsResult(int requestCode,
                                       @NonNull String[] permissions,
                                       @NonNull int[] grantResults) {
    if(requestCode == 1000) {
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            doStuff();
        } else {
            finish();
        }
    }
}

setUse!!Meric!!第一次输入一个单位?谢谢!这很有效,但现在我尝试在手机上使用该应用程序,它会在打开时自动关闭。你有什么建议,或者你能帮我吗?正如你所说的,很快就要到期了,我想我已经太晚了。但是,从你发布的代码片段来看,我不知道为什么会是closing马上。也许正在调用finish()?我发了一篇关于它的其他帖子。你想要链接还是其他什么?明天就要交了。
...
    else {
        tv_speed.setText(strCurrentSpeed + " mp/h");
    }
}

private boolean useMetricUnits() {
    return Sw_metric.isChecked();
}

@Override
public void onRequestPermissionsResult(int requestCode,
                                       @NonNull String[] permissions,
                                       @NonNull int[] grantResults) {
    if(requestCode == 1000) {
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            doStuff();
        } else {
            finish();
        }
    }
}