Witam, uczę się Javy i ponieważ nie mam doświadczenia w programowaniu, to mam do Was pewną prośbę - czy ktoś mógłby zerknąć na mój przykładowy kod poniżej i wypunktować mi błędy jakie popełniam? Czytałem na czym polega programowanie obiektowe, staram się tak robić, ale tak naprawdę nie wiem czy to co robię jest dobrze, a zależy mi, aby nie łapać złych nawyków. Będę wdzięczny też za wskazówki co zmienić, co można zrobić lepiej, o czym poczytać.
package fibonacciSequence;
public class FibonacciSequenceCalculator {
public static void main(String[] args) {
System.out.println("Ile początkowych liczb z Ciągu Fibonacciego chcesz wyświetlić?");
Argument argument = new Argument();
argument.getDataFromUser();
FibonacciSequence fibSeq = new FibonacciSequence();
fibSeq.showFibonacciSequence(argument.getNumber());
}
}
package fibonacciSequence;
import java.io.*;
public class Argument {
private int number;
boolean isCorrect;
public void getDataFromUser() {
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
isCorrect = true;
do {
try {
number = Integer.parseInt(input.readLine());
checkNumber(number);
isCorrect = true;
input.close();
}
catch(NumberFormatException e) {
System.out.println("Niepoprawne dane!");
isCorrect = false;
}
catch(IllegalArgumentException e) {
System.out.println("Liczba musi być większa od 0!");
isCorrect = false;
}
catch(IOException e) {
System.out.println("Błąd odczytu danych!");
isCorrect = false;
}
}while(!isCorrect);
}
private void checkNumber(int number) throws IllegalArgumentException{
if(number < 1) {
throw new IllegalArgumentException();
}
}
public int getNumber() {
return number;
}
}
package fibonacciSequence;
public class FibonacciSequence {
long[] sequence;
public void showFibonacciSequence(int number) {
if(number == 1) {
System.out.print(0);
}
else if(number < 94) {
calculateFibonacciSequence(number);
showResults();
}
else {
showWarning();
}
}
private void calculateFibonacciSequence(int number) {
sequence = new long[number];
sequence[0] = 0;
sequence[1] = 1;
for(int i = 2; i < sequence.length; i++) {
sequence[i] = sequence[i-1] + sequence[i-2];
}
}
private void showResults() {
for(long series : sequence) {
System.out.print(series + " ");
}
}
private void showWarning() {
System.out.println("To zbyt duży zakres - ostatnie liczby nie będą poprawnie obliczone.");
System.out.println("Wybierz poprawny zakres (maksymalnie 93 liczby).");
}
}
Z góry dziękuję!