Как исправить ошибки в академическом задании спидометра? - PullRequest
0 голосов
/ 02 апреля 2019

Я не очень хорошо разбираюсь в кодировании, но меня заставили сделать приложение для спидометра, использующее Java, для моего класса робототехники. Есть много ошибок, и я просто не уверен, как их исправить.

Некоторые из точных проблем:

1:          location.setUseMericUnits(this.useMetricUnits());
            nCurrentSpeed = location.getSpeed()

useMetricUnits подчеркнуто красным, говоря: «не удается разрешить метод» useMetricUnits () '

2:         if(this.useMetricUnits()){
    tv_speed.setText(strCurrentSpeed + " km/h");

У него такая же проблема с useMetricUnits

3:    private boolean useMetricUnits() {
        return Sw_metric.isChecked();

useMetricUnits () говорит: ; expected and return Sw_metric.isChecked() says cannot return a value from a method with a void result type

4:   @Override
        public void onRequestPermissionsResult(int requestCode,@NonNull String[] permissions,
        @NonNull int[] grantResults) {

@ Override говорит, что аннотации здесь не разрешены, (int request говорит; ожидается, а @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();
        }
    }
}
}}

Это должен быть спидометр, и я не уверен, что не так с кодом.

1 Ответ

2 голосов
/ 02 апреля 2019

Вы либо забыли закрывающую скобку для предложения else в конце updateSpeed, либо закрывающую скобку для метода 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();
        }
    }
}
...