metoda wyświetlająca poprawnie pojemność

0

To mój pierwszy temat uczę się javy. Jak poprawić metodę sprawdz_pojemnosc aby to miało sens ma sprawdzic czy jest mniejsza lub równa 1100 jeśli nie to ma wypisać 1300. W tablicy stwarzam dodatkową ilość samochodów.

class Samochod {
String nazwa;
int pojemnosc;
int liczba_drzwi;
String kolor;
private int tab[];
private int ilosc;
public Samochod(int pojemnosc, int liczba_drzwi, String kolor) {

	this.pojemnosc=pojemnosc;
		this.liczba_drzwi=liczba_drzwi;
			this.kolor=kolor;
			
		
}
public Samochod(int ilosc){
	this.ilosc=ilosc;
	tab = new int[this.ilosc];
	
}
public boolean sprawdz_pojemnosc(){
	System.out.println("Moja pojemnosc");
		if  (pojemnosc <= 1100) 
			return  pojemnosc;
		
		else
			System.out.println("pojemnosc = 1300;");
		
}

}

class Aplikacja_Samochod{
public static void main(String args[]){
//System.out.println("test");
Samochod p1 = new Samochod(1300,3,"zielony");
Samochod p2 = new Samochod(5);
}
}


0

public boolean sprawdz_pojemnosc(){
System.out.println("Moja pojemnosc");
if (pojemnosc <= 1100)
return pojemnosc;

                    else
                            System.out.println("pojemnosc = 1300;");
                    
    }

Po pierwsze zmień typ zwracanych danych ;) nie wiem co chcesz osiągnąć kompletnie bo pokręciłeś zwracany typ z tym który deklarujesz ze zwracasz :)

public boolean sprawdzPojemnosc()
{
if( this.pojemnosc <= 1100)
return true;
else
return false;
}

i teraz np. w main mógłbyś zrobić coś takiego

Samochod p1 = new Samochod(1300,3,"zielony");

if(p1.sprawdzPojemnosc())
System.out.println("Pojemnosc <= 1100");
else
System.out.println("Pojemnosc 1300");

Jeśli chcesz natomaist zwracać int jako typ to:

public boolean sprawdzPojemnosc()
{
if( this.pojemnosc <= 1100)
return this.pojemnosc;
else
return 1300;
}

i w main:
Samochod p1 = new Samochod(1300,3,"zielony");
System.out.println(p1.sprwadzPojemnosc());

Ogólnie to bym zmienił tę metodę tak aby zwracała pojemność jaka jest zapisana w zmiennej tej klasy samochód.

public int getPojemnosc()
{
return this.pojemnosc;
}

I wtedy w zależności jaką masz pojemność możesz decydować co chcesz robić :)

int pojemnosc = p1.getPojemnosc();

if( pojemnosc <= 1000 )
Sysytem.out.prinltn("Ten silnik nie ma mocy");
else if(pojemnosc <= 1900 )
System.out.println("To jest dobry silnik");
else if( pojemnosc > 1900)
System.out.println("To jest naprawde mocny silnik");

0

Dzięki za podpowiedzi:)

Jak mogę zmienić w main abym mógł program wypisać więcej ilości KM które mu wprowadzam?

Wpisuje 74,54,77
a on mi tylko podaje pierwszą liczbę.

import java.util.Scanner;

class Samochod {
String nazwa;
int pojemnosc;
int liczba_drzwi;
String kolor;
private int tab[];
private int ilosc;
public Samochod(int pojemnosc, int liczba_drzwi, String kolor) {

	this.pojemnosc=pojemnosc;
		this.liczba_drzwi=liczba_drzwi;
			this.kolor=kolor;
			
		
}
public Samochod(int ilosc){
	this.ilosc=ilosc;
	tab = new int[this.ilosc];
	
}
	
public boolean sprawdz_Pojemnosc() {
if( this.pojemnosc <= 1300)
   return true;
else
  return false;

}

}

class Aplikacja_Samochod{
public static void main(String args[]){

		System.out.println("Podaj nazwy nowych samochodów:");
	
		Scanner scan = new Scanner(System.in);
		String nazwa;
		nazwa = scan.nextLine();

		System.out.println("Nowe samochody to " + nazwa  );
		System.out.println("Podaj ilość KM samoodów");
		int Km;
		Km = scan.nextInt();
		System.out.println("Samochody maja tyle KM: " +  Km);
		
		
	
	//System.out.println("test");
	Samochod p1 = new Samochod(1300,3,"zielony");
	Samochod p2 = new Samochod(5);
	//System.out.println(p1.sprwadzPojemnosc());
	//int pojemnosc = p1.getPojemnosc();
	System.out.println( p1.sprawdz_Pojemnosc());


}

}

0

Problem w tym, że w typie String w zmiennej nazwa zmieścisz wszystkie nazwy samochodów za jednym wywołaniem nextLine() bo to łańcuch znaków czyli nazwa1 np.spacja nazwa2

int natomiast nie jest do tego - przechowuje jedną wartość, a nie ciąg

int też pobierasz tak samo i po prostu zostaje w buforze reszta gdy tylko raz pobierzesz wartość

    public static void main(String args[])
    {
                    
                    System.out.println("Podaj nazwy nowych samochodów:");
            
                    Scanner scan = new Scanner(System.in);
                    String nazwa;
                    
                    nazwa = scan.nextLine();
    
                    System.out.println("Nowe samochody to " + nazwa  );
                    System.out.println("Podaj ilość KM samoodów");

                    System.out.println("Samochody maja tyle KM: " +  Km);
                   

                    **foo**while(scan.hasNext())
                    	System.out.println("Samochody maja tyle KM: " +  scan.nextInt());**foo**

    }
0

while(scan.hasNext())
System.out.println("Samochody maja tyle KM: " + scan.nextInt());

sorry ;)

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