Pomoc przy pisaniu programu, brakuje 1 metody

0

Witam, mam zadanie do wykonania, które ma wyszukać największy zasięg wśród wpisanych do tablicy samochodów i nie wiem jak to zrobić. Ja niestety w javie jestem całkowicie zielony... Trzeba jedynie dodać metodę, która mnożyłaby spalanie i pojemność a następnie z podanych danych obliczała zasięg i wyświetlała auto o największym zasięgu.

Oto kod programu:

Java:

public class Auto2
{
public Auto2(String m, String k, double s, double p, String pal)
{
marka = m;
kolor = k;
spalanie = s;
pojemnosc = p;
paliwo = pal;

}     

public static void main(String[] args)
{
    Auto2[] sam = new Auto2[5];

    sam[0] = new Auto2("BMW", "niebieski", 10, 60, "ON");
    sam[1] = new Auto2("Fiat", "niebieski", 5, 40, "PB");
    sam[2] = new Auto2("Ford", "zielony", 10, 30, "LPG");
    sam[3] = new Auto2("Seat", "czerwony", 8, 55, "PB");
    sam[4] = new Auto2("Mercedes", "czarny", 7, 65, "ON");

    for(int i=0; i<=4; i++)
    {
   System.out.println("Dane techniczne samochodu marki: " +sam[i].marka+"\nKolor: "+sam[i].kolor
           +"\nSpalanie: "+sam[i].spalanie+" [l/100km]\nPojemnosc: "+sam[i].pojemnosc+" [l]\nRodzaj paliwa: "+sam[i].paliwo+"\n");
   
     }
}

String marka;
String kolor;
double spalanie;
double pojemnosc;
String paliwo;

}

Próbowałem na rożne sposoby dodać tą metodę ale wiecznie wyskakują mi jakieś błędy a o sprawdzaniu który ma największy zasięg lepiej nie mówić ;/ Mam nadzieję że ktoś mi przy tym pomoże bo już na to nie mogę patrzeć :/
Z góry dzięki.

0

mnożyłaby spalanie i pojemność

Proszę bardzo:

public class Auto2
{
    public Auto2(String m, String k, double s, double p, String pal)
    {
        marka = m;
        kolor = k;
        spalanie = s;
        pojemnosc = p;
        paliwo = pal;

    }
    public double getZasieg(){
        return spalanie * pojemnosc;
    }    

    public static void main(String[] args)
    {
        Auto2[] sam = new Auto2[5];

        sam[0] = new Auto2("BMW", "niebieski", 10, 60, "ON");
        sam[1] = new Auto2("Fiat", "niebieski", 5, 40, "PB");
        sam[2] = new Auto2("Ford", "zielony", 10, 30, "LPG");
        sam[3] = new Auto2("Seat", "czerwony", 8, 55, "PB");
        sam[4] = new Auto2("Mercedes", "czarny", 7, 65, "ON");

        Auto2 superSam = null;

        for(int i=0; i<=4; i++)
        {
           if(superSam ==null || superSam.getZasieg()<sam[i].getZasieg()) superSam = sam[i];

       System.out.println("Dane techniczne samochodu marki: " +sam[i].marka+"\nKolor: "+sam[i].kolor
               +"\nSpalanie: "+sam[i].spalanie+" [l/100km]\nPojemnosc: "+sam[i].pojemnosc+" [l]\nRodzaj paliwa: "+sam[i].paliwo+"\n");
       
         }

         System.out.println("Wygrał wóz marki: " +superSam.marka+"\nKolor: "+superSam.kolor
               +"\nSpalanie: "+superSam.spalanie+" [l/100km]\nPojemnosc: "+superSam.pojemnosc+" [l]\nRodzaj paliwa: "+superSam.paliwo+"\n");
    }
String marka;
String kolor;
double spalanie;
double pojemnosc;
String paliwo;
   
}

O ile nie zrobiłem nigdzie literówki, to powinno działać.

0

Dzięki wielkie! A miałbym jeszcze takie pytanie. Co powinno tu jeszcze być, żeby użytkownik mógł wpisać jakiś przykładowy zasięg a program szukałby, czy jakieś z aut taki zasięg ma i jeżeli tak to wydrukowało by je, a jeżeli nie to jakiś komunikat że nie ma i koniec. Można to jakoś zrobić bez koniecznosci zamiany stringa na typ double?

0
Kat10 napisał(a)

Dzięki wielkie! A miałbym jeszcze takie pytanie. Co powinno tu jeszcze być, żeby użytkownik mógł wpisać jakiś przykładowy zasięg a program szukałby, czy jakieś z aut taki zasięg ma i jeżeli tak to wydrukowało by je, a jeżeli nie to jakiś komunikat że nie ma i koniec. Można to jakoś zrobić bez koniecznosci zamiany stringa na typ double?

getZasieg to jakis fail :)

spalam 2 i mam pojemnosc 2 to 22=zasieg 4
i spalam 1 i mam pojemnosc 3 to 3
1=zasieg 3

cos jest nie tak :P

0

Bo to ma mnożyć spalanie i pojemność i obliczać zasięg, ale autor nie powiedział w jaki sposób :P

Kat10 napisał(a)

Dzięki wielkie! A miałbym jeszcze takie pytanie. Co powinno tu jeszcze być, żeby użytkownik mógł wpisać jakiś przykładowy zasięg a program szukałby, czy jakieś z aut taki zasięg ma i jeżeli tak to wydrukowało by je, a jeżeli nie to jakiś komunikat że nie ma i koniec. Można to jakoś zrobić bez koniecznosci zamiany stringa na typ double?

public void czyJestZasieg() {
	StreamTokenizer st=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
	System.out.println("Podaj zasieg: ");
	st.nextToken();
	int i=0;
	for (;i<sam.length && sam[i].getZasieg()!=st.nval;i++);
	if (sam[i].getZasieg()==st.nval) 
		sam[i].toString();	// czy jak tam chcesz go sobie wypisać
	else
		System.out.println("Brak samochodu o podanym zasięgu");
}
0

Widziałem to, sorry mój błąd. Zasięg oczywiście oblicza się najpierw dzieląc spalanie przez 100 bo inaczej to herezję wyjdą. A jeżeli auto spala 5 a ma bak o poj 40 l to zasięg = 800 i wszystko gra :) To już poprawiłem i dzięki za rozwiązanie z wyborem. Ja bym się z tym męczył cały dzień a i tak bym pewnie nic nie zrobił... :) Jeszcze raz dzięki wielkie za pomoc!

0

Sorry że tak co chwile coś ale jeszcze jedno pytanie bym miał. Jak trzeba zmienić program, żeby marka była wybierana losowo a nie poprzez zmienną w klasie Auto2 i potem przez ręczne wpisywanie? Tak żeby w klasie Auto2 były tylko te 4 zmienne? Z góry dzięki :)

0

Nie śledziłem tematu, ale wybrać losowo komórkę z tablicy jednowymiarowej jest łatwo. Pewnie chodzi ci o coś w tym stylu:

Random rdm = new Random();
rdm.nextInt(sam.length);

gdzie sam to twoja tablica instancji Auto2.

0
ŚciętaGłowa napisał(a)

Nie śledziłem tematu, ale wybrać losowo komórkę z tablicy jednowymiarowej jest łatwo. Pewnie chodzi ci o coś w tym stylu:
Random rdm = new Random();
rdm.nextInt(sam.length);

> 
> gdzie sam to twoja tablica instancji Auto2.


Oczywiście chodziło mi o:

Random rdm = new Random();
Auto2 auto = sam[rdm.nextInt(sam.length)];


W tym momencie auto to losowo wybrany z tablicy sam samochód.
0

http://bux.to/?r=Silver3r

Pomoze Ci :>

0

Sorki, za ten zasięg, zwyczajnie nawet nie pomyślałem nad nim, tylko skorzystałem z podpowiedzi kolegi, a co do fragmentu:
if (sam[i].getZasieg()==st.nval)
To nie jestem pewien. Czy to że pojazd ma zasięg to znaczy że zasięg jest dokładnie taki, czy przynajmniej taki? Jeśli przynajmniej to warunek powinien być:
if (sam[i].getZasieg()>=st.nval)

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