Składnia java

DB
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 13 lat
  • Postów:51
0

Zamieszczę tutaj kilka pytań, które mam

1.Jeśli sprawdzamy czy "liczenie" nie jest puste , możemy to zapisać na 2 sposoby?

Kopiuj
if(liczenie != "")

lub

Kopiuj
if(liczenie != null)

czy oba są sobie równoważne

2

Kopiuj
class nazwaException extends Exception 
{
       nazwaException(String komunikat)
		{
                super(komunikat);
        }
}

Czy takie sformułowanie wyjątku daje możliwość skorzystania potem z getmessage

Kopiuj
catch(nazwaException e)
				{
                System.out.println("Blad: "+e.getMessage());
                }

czyli następnie wypisanie odpowiedniego wyjątku dla konkretnych wyrażeń?
dlaczego musi być wyżej napisane słowo super ? i w połączeniu z komunikat daje taką możliwość, proszę tutaj o wytłumaczenie n tego problemu.

  1. co oznacza
Kopiuj
if(!(c[i]=='1')

jeśli w tablicy c i-ta liczba będzie różna od 1?

  1. podobne do 3.
Kopiuj
return !liczby[n];

Prosiłby o dokładny opis mam swoje przypuszczenia dotyczące tego, lecz nie chciałbym się wprowadzić w błąd.

Olamagato
Ustal sobie jakiś konsekwentny sposób używania nawiasów {, } i wcięć bo już widać, że masz z tym problem. Tekst programu z chaotycznym formatowaniem jest nieczytelny, więc mało komu będzie się go chciało analizować.
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
1
  1. Absolutnie nie są! Co więcej, oba zapewne są niepoprawne. Pierwsze sprawdza czy referencja na podany string jest równa referencji do "" co w większości przypadków będzie nieprawdą. Drugie sprawdza czy podana referencja jest pusta - nie wskazuje na żaden obiekt. Jedno z drugim nie ma nic wspólnego. A zapewne tak na prawdę chodziło o:
Kopiuj
if(!("".equals(liczenie)))

(czemu nie liczenie.equals("")? żeby uniknąć problemu z liczenie==null)

  1. Tak, co zresztą mozesz sprawdzić... super() oznacza wywołanie konstruktora klasy nadrzędnej, w tym wypadku konstruktora Exception(String) którego argument jest właśnie tym co ci potem zwraca getMessage()

  2. Nie liczba tylko ZNAK! A warunek sprawdza czy i-ty znak w tablicy c nie jest znakiem '1'

  3. W Javie to chyba nie przejdzie o ile liczby[] nie są tablicą booleanów. C++ by sobie to zrzutował do booleana.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
DB
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 13 lat
  • Postów:51
0

czyli w 1 zamiast tego napisanego wyżej co mam wystarczy zmienić na to if(!("".equals(liczenie))) i powinno być już wszystko dobrze?
w 2. w nawiasie super tutaj jest komunikat może być dowolne słowo czy musi być akurat komunikat
w 3 rozumiem
w 4 rzeczywiście chodzi o tablice booleanów, dokładniej program dotyczy sita eratostenesa. czyli również może przejść?

Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0
  1. Zależy co chcesz osiągnąć, ja przecież zgadywałem...
  2. Co ty ćpasz? W nawiasie od super() masz podać argumenty konstruktora klasy nadrzędnej. Może to byc cokolwiek. Może tych argumentów być wiele. Wszystko zalezy od klasy nadrzędnej...
  3. Czytając twoje posty mam wątpliwości...
  4. Nazwanie tablicy booleanów "liczby" to terroryzm... Oczywiście że "może przejść" w takim razie

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.