program porównujący

0

Chcę napisać tak , że ma program wprowadzić do tablicy 2 samochody i porównać
ich pojemność , kolor i markę .
Napisałem ilość = 1
bo chcę spróbować,aby program wykorzystywał strukturę stosu.
Czyli jeśli nie ma nic to -1.

Stworzyłem tablice 5-elementową oraz mam 2 samochody na stosie.
Jak je mogę porównać metodami i czy tak to mogę zrobić w ogóle?
Klasa się powinna nazywać jednak tablica bo nie utworzyłem 5 samochodów
tylko rozmiar tej tablicy.

class Samochod{
private String[] tab;
private int ilosc;
private String kolor;
private int pojemnosc;
private int rozmiar;
public Samochod(int rozmiar){
this.rozmiar = rozmiar; //referencja do biezacej klasy
this.tab = new String[rozmiar];
kolor = "zielony";
this.pojemnosc = pojemnosc;
ilosc = 1;
}

public void wstaw_samochod(String car){
//if(!pojemnosc)
}

}

class Aplikacja_Samochod{
public static void main(String args[]){
//Samochod s1 = new Samochod(5);
Samochod s2 = new Samochod(5);
}
}


0

public static boolean porownanie(Samochod s1, Samochod s2)
{
if( s1.pojemnosc == s2.pojemnosc)
if(s1.kolor.equalsIgnoreCase(s2.kolor))
//reszta porownan
return true;

return false;
}

0

jesli zgadza sie pierwszy if wchodzi do drugiego, jesli drugi sie zgadza i tak do konca to zwraca true jesli nie dojdzie do ostatniego ifa to wywali false

metoda statyczna, mzoe byc i nie. Wyrzuć s2 z przyjmowanych argumentów i zamień w kodzie na this

0

poza tym o czym Ty mówisz z tym mainem? Ze main jest statyczny to swoją drogą. Ale nic W NIM nie masz z tego co widze ;>

Nie wiem co bardziej by się nadawało do Twoich celów. Jak dla mnie statyczna jest bardziej uniwersalna ale to wszystko zależy od tego jak to chcesz wykorzystywać;>

0
  1. Kod w znaczniki.
  2. Napisałeś to tak chaotycznie, że ciężko coś z tego zrozumieć.
  3. Chcesz zastosować strukturę stosu, ale jej nie stosujesz? Chcesz napisać swój stos czy użyć gotowego? Cokolwiek wybierasz stos na samochody nie powinien być w klasie Samochod.

Aby osiągnąć to co chcesz, powinieneś dobrze zaprojektować klasę, np.:

class Auto{
    private String name;
    private String color;
    
    public Auto(String name, String color){
        this.name = name;
        this.color = color;
    }
    public boolean eq(Auto a){
        return this.name.equals(a.name);
    }
}

Rozbuduj ją tak, jak potrzebujesz.

W mainie lub w osobnej klasie możesz zarządzać tymi obiektami. Tzn. dodawać je do tablic/stosu/etc.

0

Własny stworzyć
a z tym mainem
i metodą statyczną to nie wiedziałem na takim etapie pisania metod jeszcze nie jestem.
Mam mieć tak tablice np 5 elementową i szczyt stosu na 2 samochody i tego się trzymam dopiszę dodatkowe pola.

0

W sumie racja, mogłem wszystko w jednego ifa :) ale ostatnio w projekcie się przyzwyczailem do piętrowego bo w każdym elsie ustawiałem inny status w zależności gdzie mnie wywalało ;) to tak z rozpędu :)

Chyba musze w koncu zalozyc konto bo nic nie moge edytowac ;)

0

Utworzyłem nową klasę na sam stos. Czy teraz mogę dodawać metody do klasy stos
z klasy samochod.
Jeśli dobrze rozumiem to mam tablice 10elementową a stos jak na razie pusty jest.

mielibyście jakieś pomysły co mógłbym dopisać. To jest tylko do nauki pisane.


class Samochod{
private int silnik;
private String marka;
private String kolor;
private int ilosc_drzwi;

public Samochod(int silnik , String marka, String kolor, int ilosc_drzwi){
	this.silnik = silnik;
	this.marka = marka;
	this.kolor = kolor;
	this.ilosc_drzwi = ilosc_drzwi;
	
}

}

class Stos{
private int rozmiar;
private int []tab;
private int szczyt; //indeks ostatniego elementu

public Stos(int rozmiar){
this.rozmiar = rozmiar;
this.tab = new int[rozmiar];
szczyt = -1; //wartość 0 na początku

}
public void wstaw(String element){

}

}

class Aplikacja_Samochod{
public static void main(String args){
Samochod s1 =new Samochod(1000,"mazda","zielony",4);
Stos stos = new Stos(10);
}
}

0

Ale chcesz wstawiać na ten stos samochody, prawda? Więc nie int tab tylko Samochod tab. Metoda dodająca na stos może wyglądać np. tak:

public void push(Samochod s){
     stack[++top] = s;
}

Typem, który używasz jest Samochod, a nie string ani int. Klasa, którą napisałeś ma trzymać kolekcję obiektów Samochod.

0

Skompiluje się ;). Jakie błędy, bo bez tego to ciężko...
Metoda do sprawdzania pustości wydaje się ok.

PS. Dawaj kod w znaczniki.

0

error: incompatible types mi wywala niestety dla metody wstaw
Mógłbyś rozpisać jak ta metoda wstaw działa :)

0

<code=
class Samochod{
private int silnik;
private String marka;
private String kolor;
private int ilosc_drzwi;

public Samochod(int silnik , String marka, String kolor, int ilosc_drzwi){
	this.silnik = silnik;
	this.marka = marka;
	this.kolor = kolor;
	this.ilosc_drzwi = ilosc_drzwi;
	
}

}

class Stos{
private int rozmiar;
private int []tab;
private int szczyt; //indeks ostatniego elementu

public Stos(int rozmiar){
this.rozmiar = rozmiar;
this.tab = new int[rozmiar];
szczyt = -1; //wartość 0 na początku

}
public boolean pelny(){

	return((szczyt+1) == rozmiar) ;
		
	
} 

public void wstaw(Samochod s1){
tab[++szczyt] = s1;
}

}

class Aplikacja_Samochod{
public static void main(String args){
Samochod s1 =new Samochod(1000,"mazda","zielony",4);
Stos stos = new Stos(10);
}
}

java>

0

No ale popatrz co Ty piszesz:
private int []tab;
this.tab = new int[rozmiar];
Co trzymasz na stosie? Int'y? Nie. Samochody. Popraw.

0

Jaki tab? Gdzie masz ten tab zadeklarowany?
Tworzysz stos na obiekty typu Samochod, a nie na int czy string czy cokolwiek innego. Twój stos reprezentowany jest w sposób tablicowy, zatem tablica powinna wyglądać tak:
Samochod[] tablica = new Samochod[rozmiar]
Rozumiesz to czy dalej nie bardzo? Ilość elementów tablicy to rozmiar, elementami tablicy są obiekty typu Samochod.

0

Czego nie rozumiesz?
int[] tab to tablica na wartości typu INT! A Ty chcesz przechowywać wartości typu SAMOCHOD...
Zatem tablica powinna wyglądać tak, jak napisałem wyżej i w poprzednich postach. Z czym masz problem?

0

Naucz się czytać ze zrozumieniem i przeczytaj te posty jeszcze raz. Nie będziesz zadawał kolejnych durnych pytań, na których odpowiedź masz w co najmniej trzech moich, poprzednich postach.

EDIT: Wyszły 4 moje pod rząd, bo gościu swoje posty usunął...

0

Po zmianie tablicy program się skompilował?



class Samochod{
	private int silnik;
	private String marka;
	private String kolor;
	private	int ilosc_drzwi;
	
	public Samochod(int silnik , String marka, String kolor, int ilosc_drzwi){
		this.silnik = silnik;
		this.marka = marka;
		this.kolor = kolor;
		this.ilosc_drzwi = ilosc_drzwi;
		
	}
}
	
class Stos{
	private int rozmiar;
	private Samochod []tab;
	private int szczyt; //indeks ostatniego elementu

public Stos(int rozmiar){
	this.rozmiar = rozmiar;
	this.tab = new Samochod[rozmiar];
	szczyt = -1; //wartość 0 na początku
 
 }
public boolean pelny(){
		
		return((szczyt+1) == rozmiar) ;
			
		
	} 
 
 
 
public void wstaw(Samochod s1){
        tab[++szczyt] = s1;
} 
		

 
}

class Aplikacja_Samochod{
	public static void main(String args){
		Samochod s1 =new Samochod(1000,"mazda","zielony",4);
		Stos stos = new Stos(10);
	}
}



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