KAID6IX Ответов: 1

Задачи последовательности Фибоначчи


Я написал код ниже, который делает последовательность Фибоначчи проблема, с которой я сталкиваюсь, заключается в том, что когда я запускаю его против моего тестового кода JUnit, решается только одна проблема. Я покажу вам ниже.

Это мой славный кодекс ... не совсем так.

Что я уже пробовал:

import java.util.ArrayList;
 
public class ResitCode {
 
    public int Fib_No(int position) {
        position = 10;
        ArrayList<Integer> a = new ArrayList<Integer>();
        a.add(0);
        a.add(1);
          System.out.println(position); 
        for (int i = 1; i <= position; ++i) {
             
            System.out.println(a.get(0) + " ");
            int sumofBoth = a.get(0) + a.get(1);
            int a1 = a.get(0);
            int a2 = a.get(1);
            a1 = a2;
            a2 = sumofBoth;
          
             
        }
 
        return 0 ;
 
    }


Теперь это мой модульный тестовый код

import static org.junit.jupiter.api.Assertions.*;
 
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
 
class ResitCodeTest {
 
    public static ResitCode test;
     
    @BeforeAll
    static void setUpBeforeClass() throws Exception {
        test = new ResitCode();
    }
 
    @ParameterizedTest
    @DisplayName("Testing Fib_No")
    @CsvSource({
                    "1,0",
                    "2,1",
                    "3,1",
                    "4,2",
                    "8,13",
                    "14,233"                   
    })
    void testFib_No(int pos, int fibno) {
        assertEquals(fibno,test.Fib_No(pos));
    }


Когда я столкнусь с этим, будет решена только одна проблема, и если кто-нибудь сможет сказать мне, что я делаю неправильно, это будет очень ценно.

1 Ответов

Рейтинг:
12

Patrice T

Цитата:
Когда я столкнусь с этим, будет решена только одна проблема, и если кто-нибудь сможет сказать мне, что я делаю неправильно, это будет очень ценно.

Ни в чем нет ничего плохого.
import java.util.ArrayList;
 
public class ResitCode {
 
    public int Fib_No(int position) {  // here you receive the position you want
        position = 10;  // and here you kill it !
        ArrayList<Integer> a = new ArrayList<Integer>();
        a.add(0);
        a.add(1);
          System.out.println(position); 
        for (int i = 1; i <= position; ++i) {
             
            System.out.println(a.get(0) + " ");
            int sumofBoth = a.get(0) + a.get(1);
            int a1 = a.get(0);
            int a2 = a.get(1);
            a1 = a2;
            a2 = sumofBoth;
          
             
        }
 
        return 0 ;  // Whatever you do, the result is 0 !
 
    }

и это только 2 проблемы в этом коде, ни о чем другом не идет речь.
Единицы измерения хорошо проверяют, работает ли ваш код так, как ожидалось, но не помогают вам исправить код.
Инструмент, который вам нужно изучить, - это отладчик, он покажет вам, что на самом деле делает ваш код.
-----
Ваш код ведет себя не так, как вы ожидаете, или вы не понимаете, почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что должен делать ваш код, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]

http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html[^]
https://www.jetbrains.com/idea/help/debugging-your-first-java-application.html[^]

Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.

[Обновление]
@CsvSource({
                "1,0",
                "2,1",
                "3,1",
                "4,2",
                "8,13",
                "14,233"
})

Даже ваш тестовый блок выглядит неправильно f(0)=0, f(1)=1
Число Фибоначчи - Википедия[^]


Maciej Los

5ed!

Patrice T

Спасибо