Pomoc w rozwiązaniu zadania :)

0

Profesor wystawił przykładowe kolokwium rozwiązałem 4 zadania myślę że dobrze.
Co do 5 to znalazłem błędy takie:

*<int> powinno być <Integer> ale nie wiem jak to uzasadnić

  • if((liczby.get -> tutaj niepotrzebny jest ten drugi (

nie znalazłem innych błędów, czy może ktoś pomóc je znaleźć i uzasadnić czemu tak powinno być? :)

076fc64467.png

4

2: jest źle bo stringi porównuje się przez .equals() a nie ==
4: jest źle bo nie przypisałeś wartości do pola nr konta
5:

  • genericsy w javie mogą być tworzone tylko dla klas, a nie dla prymitywów (ale może kiedyś to przyjdzie ze Scali...) więc nie można mieć ArrayList<int> a co najwyżej ArrayList<Integer>
  • new ArrayList() to tworzenie raw-type collection a próbujesz potem przypisać to do typowanej generycznej referencji. Powinno być new ArrayList<Integer>()
  • jeden nawias otwierajacy za dużo przy if((liczby.get
1

Zadanie 1. Metoda sprawdzająca hasła. Warunek jest błędny ponieważ powinieneś porównać je przez equals (Wyjaśnienie: http://stackoverflow.com/a/513839/5877109)
Może to nie jest jakiś duży błąd ale zamiast zwracać int w metodzie "sprawdzHaslo" lepiej byłoby aby zwracała true/false.

Zadanie 4.
W konstruktorze przekazujesz 2 parametry (nrKonta i haslo) a przypisujesz tylko hasło. nrKonta nadaj jest null'em.

0

Czyli rozumiem, że lepiej zrobić w 1 zadaniu:

public Boolean sprawdzHaslo(String haslo)
{
	if(this.haslo.equals(haslo)){return true;}
	return false;
}

A co do 4 tak jest OK?

	Konto(String nrKonta, String haslo)
{	super(haslo);
	this.nrKonta = nrKonta;	
}
0

Tak, teraz jest dobrze. Pozwolę sobie jeszcze powiedzieć coś o operatorze ==

String A = "napis" ;
String B = "napis";
return A.equals(B);     // zwróci true
return A==B;              // zwróci false
B = A ;
return A==B               // zwróci true, ten operator porównuje czy te dwie zmienne referencyjne
                                  // wskazują na ten sam obiekt w pamięci.
0

@markosz1 nie masz racji. Porównanie A==B najpewniej zwróci true bo Stringi w javie mają cache. Powinieneś zrobić

String A = new String("napis");
String B = new String("napis");

I wtedy faktycznie uzyskasz oczekiwany efekt.

1
drondal napisał(a):

Czyli rozumiem, że lepiej zrobić w 1 zadaniu:

public Boolean sprawdzHaslo(String haslo)
{
	if(this.haslo.equals(haslo)){return true;}
	return false;
}

Jest co prawda ok, ale metoda equals sama w sobie już zwraca true/false więc if tak naprawdę jest zbędny:

public Boolean sprawdzHaslo(String haslo){
	return this.haslo.equals(haslo);
}

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