Witam
Dopiero zacząłem wchodzić w obiekty i już zaczynają mi się problemy, których nie mogę zrozumieć.
Otóż, mam program, który ma liczyć silnię. Mam jedną klasę, w której pobieram dane oraz jedną, w której wykonuję obliczenia, oraz oczywiście main. Jednakże Nie mogę zrozumieć jak poprawnie przywołać daną z jednej klasy do innej aby poprawnie wyświetlało wyniki. Już podaję przykład dla wyjaśnienia.
Tutaj jest main:
package Silnia;
public class Main {
public static void main (String[] args) {
Dane zmienna=new Dane();
int dana=zmienna.Wprowadzenie(0);
Silnia Iteracja=new Silnia();
int mnozenie=Iteracja.obliczenie(0);
System.out.println("Silnia jest równa: "+mnozenie);
//System.out.println("Rekurencją:");
//SilniaRekurencja rekurencja=new SilniaRekurencja();
//int rekuruj=rekurencja.rekurencja(0, 0);
//System.out.println("Silnia jest równa: "+rekuruj);
}
}
Tutaj jest klasa Dane, w której pobierana jest wartość wpisana z klawiatury.
package Silnia;
import java.util.*;
public class Dane {
int Wprowadzenie (int x) {
Scanner in=new Scanner(System.in);
System.out.println("Wprowadź liczbę");
x=in.nextInt();
return x;
}
}
Oraz klasa Silnia
package Silnia;
import java.util.*;
public class Silnia {
private Scanner in;
int obliczenie (int x) {
Dane dana=new Dane();
int liczy=dana.Wprowadzenie(x);
int l=1, suma=1;
//in = new Scanner(System.in);
//System.out.println("Wprowadź liczbę.");
//x=in.nextInt();
while (l!=(x+1)){
suma*=l;
l++;
}
return suma;
}
}
Kiedy ignoruję klasę Dane i po prostu proces pobierania danych od użytkownika przenoszę do samej klasy Silnia. Program działa jak trzeba i wyświetla dobry wynik, jednakże chciałem zrobić tak aby za pobieranie danych odpowiadała osobna klasa a klasa Silnia pobierała z niej wartość i na jej podstawie wykonywała obliczenia. Chciałem tak zrobić bo program miał wykonywać te same obliczenia za pomocą iteracji i w innej klasie rekurencji i chciałem wykorzystać tylko jedno wprowadzanie danych, poza tym trochę sobie utrudniłem bo chciałem po prostu lepiej zrozumieć operowanie tym.
Problem polega na tym, że gdy próbuję wczytać do klasy Silnia dane z klasy Dane, w ogólnym rozliczeniu program dwa razy chce pobierać ode mnie dane oraz wyświetla wynik: "1" dla wartości 5.
Nie rozumiem też dla czego, gdy wywołuję klasę w main jak np. tutaj:
Dane zmienna=new Dane();
int dana=zmienna.Wprowadzenie(0);
W nawiasie przy "wprowadzenie" nie mogę wpisać innej wartości niż 0?
Proszę o jakieś naświetlenie mi sytuacji i ewentualną pomoc w rozwiązaniu problemu programu.
Mam nadzieję, że jasno wytłumaczyłem o co mi chodzi.
Wszystkie te widoczne powyżej komentarze w linijkach kodu to po prostu pozostałości po moim kombinowaniu z programem. Zamiast usuwać linijkę, robię z niej komentarz, aby potem ewentualnie szybko do niej wrócić gdy mnie coś oświeci. ;)