Random nie losuje liczby

0

Witajcie !
Możecie mi powiedzieć co w tym kawałku kodu jest skopane? Nie wylosowuje mi liczby próbowałem, ale coś mi nie wychodzi .. Chce aby wylosowało mi jedynie jedną liczbę i przypisało do settera i tyle :D

	public  void settemperaturaMax ()
	{
		Random rnd = new Random();
		int wylosowana = 120 + rnd.nextInt(300);
		temperaturaMax = wylosowana;
		System.out.println("Temperatura wynosi "+ wylosowana);
		
	}
 
0

Ale co ci nie działa ... przecież to losuje i dodaje 120 WTF ?

0

Ale jaki niby jest efekt jak wywołasz ten kod? Po czym wnioskujesz że nie działa?

0

Co to znaczy "przypisało do settera" ?

Wartości przypisujesz do zmiennych, a nie do metod (np. setterów).

0

Przecież wszystko tutaj działa.

public void settemperaturaMax()
{
     Random rnd = new Random();
     temperaturaMax = rnd.nextInt(300);
     System.out.println("Temperatura wynosi "+ temperaturaMax);
 }
0

Chodzi mi o to że przedział losowania to <120,300>. <ort>Z kąd</ort> wiem że nie działa ponieważ potem wartość wylosowana trafia do metody i tam nie jest brana pod uwagę.

	@Override
	public void [błąd ortograficzny]() {
		System.out.println("TOSTER NA SPRZEDAŻ !! ");
		double cena2 = getcena() - ((gettemperaturaMax() + (getiloscMiejsc()*10))*0.87);
		setcena(cena2);
		System.out.println("Cena wynosi: "+cena2+" zł");
		
	}
0

To pokaż w jaki sposób wywołujesz te 2 metody. Albo lepiej. Pokaż okrojony kod na ideone który prezentuje twój problem.

0

To jest klasa bazowa: https://ideone.com/HjQtLu
To jest klasa Toster która dziedziczy po bazowej : https://ideone.com/um3Cpl
To jest main: https://ideone.com/IdgEzP

Niedawno zacząłem przygodę z Javą, i tak właśnie lecę przez tą obiektowość :) czy mógłbyś stwierdzić na podstawie kodu na jakim jestem poziomie :D ?

0

Na razie nie masz żadnego poziomu, ten nadaje się jedynie do wyrzucenia.

0

Aha no ok :) to mógłbyś teraz powiedzieć jak rozwiązać mój problem ??

0

Ale jaki jest twój problem ?

0

Taki że nie wybiera mi tej liczby, a liczba z randoma jest mi potrzebna aby obliczenie było prawdziwe :(

2

ŻOŁNIERZU ! składaj raport prostymi, jednoznacznymi zdaniami !

co i gdzie CI NIE WYBIERA !

0

Ok więc się rozpisze :) :
A więc tak chce aby z tego settera wybrało mi losowo jedną cyfrę z przedziału <120,300>

public  void settemperaturaMax ()
	{
		Random rnd = new Random();
		int wylosowana = 120 + rnd.nextInt(300);
		temperaturaMax = wylosowana;
		System.out.println("Temperatura wynosi "+ temperaturaMax);
		
	} 

Po co mi to? Potrzebne do obliczeń w metodzie abstrakcyjnej:

 
@Override
	public void sprzedarz() {
		System.out.println("TOSTER NA SPRZEDAŻ !! ");
		double cena2 = getcena() - ((gettemperaturaMax() + (getiloscMiejsc()*10))*0.87);
		setcena(cena2);
		System.out.println("Cena wynosi: "+cena2+" zł");
		
	}

Ponieważ teraz tak jakby nie bierze po uwagę gettemperaturaMax() tylko obliczba reszte czyli (getiloscMiejsc()*10))*0.87). Więc wynik jest oszukany, i chce wiedzieć dlaczego Random nie losuje mi tej liczby i nie przypisuje do zmiennej.
Dzięki za wytrwałość :)

1

Ech. Matematyka level ameba. z przedziału <120,300> A z jakiego przedziału wg ciebie losuje rnd.nextInt(300)? Nie wiesz? Sprawdźmy w dokumentacji!
http://docs.oracle.com/javase/8/docs/api/java/util/Random.html#nextInt-int-

Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive)

Czyli twoje rnd.nextInt(300) zwróci liczbę z przedziału <0, 299>
A co ty teraz robisz z tą liczbą? Otóż dodajesz do niej 120. Jaki więc uzyskamy przedział? <120, 419>

2

Po pierwsze, jak chcesz liczbę (a nie cyfrę) z przedziału <120,300> to losuj tak:

int wylosowana = 120 + rnd.nextInt(181);

Po drugie, wywołałeś funkcję settemperaturaMax?

1 użytkowników online, w tym zalogowanych: 0, gości: 1