Как вернуть последнее сгенерированное число в цикле? - PullRequest
0 голосов
/ 11 июня 2019

Как мне получить последний сгенерированный номер цикла for?

Так что, возможно, через 10 раз я захочу вернуть это число, но оно говорит: Этот метод должен возвращать результат типа float.Когда я пытаюсь подогнать его (добавив оператор возврата), он вообще не работает ...

package test;

public class Test2 {
    public static void main(String[] args) {

        plus();
    }

    public static float plus() {
        float a = 13.6f;
        float t = 1;
        float c = 0;

        for (int i = 0; i < 10; i++) {
            c = (a * t + c);
            if (i == 9) {
                return (float) (c);

            }
        }
        System.out.println(c);

    }
}

Этот метод должен возвращать результат типа float.

Ответы [ 3 ]

1 голос
/ 11 июня 2019

Здесь:

System.out.println(c);

Тот факт, что вы поместили этот оператор после в теле цикла, уже означает, что вы можете предположить, что, возможно, ваш цикл не всегда заканчивается возвращая весь метод в теле цикла.

Компилятор тоже не знает (может, но в Java компилятор довольно глуп и игнорирует такие знания).

Таким образом: вы должны убедиться, что есть оператор return для всех путей, которые могут быть взяты.

Прямо сейчас, вы только покрываете путь внутри этого цикла for.Но что, если этот цикл никогда не выполняется или заканчивается без достижения возврата?!

Таким образом: просто добавьте возврат в конце.

В идеале вы просто возвращаете c и удаляетеif + возврат из тела цикла.Вы хотите вернуться после последней итерации цикла, поэтому просто поместите ваш возврат после тела цикла!

0 голосов
/ 11 июня 2019

Попробуйте код ниже

import java.lang.System;
import java.lang.*;

public class Test2 {
    public static void main(String[] args) {

        float result = Test2.plus();
        System.out.println(result);
    }

    public static float plus() {
        float a = 13.6f;
        float t = 1;
        float c = 0;

        for (int i = 0; i < 10; i++) {
            c = (a * t + c);
            if (i == 9) {
                return (float) (c);
            }
        }
        return c;
    }
}
0 голосов
/ 11 июня 2019

вам не нужен оператор if в цикле, так как он все равно остановится на i == 9.

public static float plus() {
    float a = 13.6f;
    float t = 1;
    float c = 0;

    for (int i = 0; i < 10; i++) {
        c = (a * t + c);
        }

    return c;
}
...