Problem z java

Odpowiedz Nowy wątek
2019-05-12 21:14
0

Przesiadłem się na chwilę z Pythona na Javę. I mam parę dziwnych problemów.
Moja wersja Javy to 8.

Np w ogóle nie chce działać np taka prosta instrukcja
(if a > 1) c = 10;

Tylko gdy w if są zmienne to cała instrukcja przestaje w ogóle działać. gdy zamiast a jest zwykła liczba wszystko jest ok. Chodzi konkretnie o oznaczanie zmiennej c. Nie chce działać.

Podobnie jest z inną rzeczą. Nie chce mi działać skrócone AND czyli &&. Program kompletnie je ignoruje i wykonuje działanie dalej jak nigdy nic.
To są jakieś konwencje których nie znam bo się dopiero uczę czy co ?

edytowany 1x, ostatnio: szrot, 2019-05-12 21:15

Pozostało 580 znaków

2019-05-12 21:22
0

to nie ma prawa zadziałać
(if a > 1) c = 10;
zmień to na
if (a>1) c = 10;

Pozostało 580 znaków

2019-05-12 21:27
0

Przepraszam za niedbalstwo ale ciągle nie mogę przyzwyczaić się do Javy ;). Napisałem oczywiście tak jak ty mówiłeś.
https://zapodaj.net/37228aa4f87ec.jpg.html
Nie działa

Podobnie jest z tym && W książce z której się uczę wszystko działa i mam nawet kod oryginalny i dupa. .

edytowany 2x, ostatnio: szrot, 2019-05-12 21:29
zgodnie z tym na co błąd wskazuje, nie zainicjowałeś zmiennej c, kompilator wskazuje że flow aplikacji może pójść w takim kierunku, że c w momencie wypisywania nie będzie zainicializowana, co jest błędem - ThisIsHowIRoll 2019-05-12 21:32
Przeczytałeś błąd który kompilator pokazuje? Co mówi pierwszy wynik ze stacka? W Javie zmienne lokalne nie mają domyślnych wartości. Więc jeśli napiszesz int c; to kompilator "nie wie" jaka wartość jest w c, a próbujesz ją wypisać. - kelog 2019-05-12 21:33

Pozostało 580 znaków

2019-05-12 21:42
0

Książka, z której się uczysz każe Ci zaczynać naukę od pisania w notatniku i kompilacji z wiersza poleceń?
Zmień ksiązkę.

Zainstaluje Eclipse/Intelij i staraj się czytać dokładnie komunikaty błędów.

Używanie IDE od samego początku to zło. Jak masz nauczyć się języka, to zwykły Notepad++ styknie. Jeśli dostaniesz błąd, to wiesz, że sam coś zrobiłeś źle: jeden plik źródłowy, jeden wynikowy. Z IDE możesz nie wiedzieć gdzie szukać błędu, bo coś się wygenerowało z automatu. - Lubię Naleśniki z Dżemem 2019-05-12 22:13
Obecne IDE, na podstawowym poziomie są tak idioto odporne, wystarczy czytać. Szczególnie gdy nasz kod zawiera się w jednym pliku. Ale każdy ma swoją opinię :) - kixe52 2019-05-12 22:26
Wyobraź sobie, że ludzie nawet tego nie umieją, naprawdę. Nawet ostatnio koleżka miał problem, że mu coś nie działa. Okazało się, że zrobił metodę main w nowej klasie a IDE ciągle było uruchamianie ze starej. Gdyby wpisał java Klasa12 zamiast java Klasa45, to IMHO byłoby czytelniejsze. - Lubię Naleśniki z Dżemem 2019-05-12 22:29
Wygrałeś :) - kixe52 2019-05-12 22:33

Pozostało 580 znaków

2019-05-12 21:47
0
kixe52 napisał(a):

Książka, z której się uczysz każe Ci zaczynać naukę od pisania w notatniku i kompilacji z wiersza poleceń?
Zmień ksiązkę.

Zainstaluje Eclipse/Intelij i staraj się czytać dokładnie komunikaty błędów.

Książka to Java A Beginner's Guide. Wygląda na dobrą. Jeżeli znasz lepszą to słucham propozycji.

edytowany 1x, ostatnio: szrot, 2019-05-12 21:48
Pokaż pozostałe 2 komentarze
Mimo to, zainstaluj normalne IDE. Z notatnikiem daleko nie zajdziesz. - kixe52 2019-05-12 21:53
Ja szczerze nie zamierzam zagłębiać się w Javę. Chciałem się uczyć algorytmów i książka z której chce się uczyć używa kodu z Javy. Chcę poznać tylko podstawy. - szrot 2019-05-12 21:55
Rozumiem, że szkoda Ci minuty na instalacje programu, minuty na założenie nowego projektu i poświęcenie znikomej ilości miejsca na dysku? Ok, co kto woli. Ale następnym razem nie przychodź na forum z problemem, że masz nie zainicjalizowaną zmienną lub że próbujesz skompilować plik, którego nawet nie zapisałeś po zmianach w notatniku :) - kixe52 2019-05-12 21:58
Chłopie popatrz na screena. Kod jest po prawej. Zmienna jest zainicjowana. - szrot 2019-05-12 21:59
Chłopie popatrz po prawej, plik w którym piszesz kod jest na czerwono, tzn, że nie zapisałeś ostatnich zmian. Poza tym wyżej dostałeś już odpowiedź co jest nie tak :) - kixe52 2019-05-12 22:02

Pozostało 580 znaków

2019-05-12 22:12
0

A zadeklarowales wczesniej zmienna a i c?

Powinno byc na poczatku zwykla deklaracja:

int a = 3;
int c;

A dopiero potem:

if (a>1) {
c = 10;
}

Ze swojej strony rowniez polecam IntellIJ, bardzo przydatny program, jak masz gdzies blad, to program to wykryje i w wiekszym lub mniejszym stopniu wskaze Ci na przyczyne

szrot napisał(a):

Przesiadłem się na chwilę z Pythona na Javę. I mam parę dziwnych problemów.
Moja wersja Javy to 8.

Np w ogóle nie chce działać np taka prosta instrukcja
(if a > 1) c = 10;

Tylko gdy w if są zmienne to cała instrukcja przestaje w ogóle działać. gdy zamiast a jest zwykła liczba wszystko jest ok. Chodzi konkretnie o oznaczanie zmiennej c. Nie chce działać.

Podobnie jest z inną rzeczą. Nie chce mi działać skrócone AND czyli &&. Program kompletnie je ignoruje i wykonuje działanie dalej jak nigdy nic.
To są jakieś konwencje których nie znam bo się dopiero uczę czy co ?

edytowany 2x, ostatnio: ZiemekNS, 2019-05-12 22:13

Pozostało 580 znaków

2019-05-12 22:19
0

Dlaczego && nie działa ?
https://zapodaj.net/fa126911b30ea.jpg.html

edytowany 2x, ostatnio: szrot, 2019-05-12 22:22

Pozostało 580 znaków

2019-05-12 22:23
0

@szrot: Dobrą praktyką jest zadeklarowanie i przypisanie zmiennej PRZED jej użyciem, najlepiej na początku programu/ funkcji - wtedy wiesz, gdzie szukać. Możesz mieć np.

int a = 0;
if (cosTam()) {
    a = 10;
}
System.out.println(a);

Kod się skompiluje a i od razu wiesz czy if się wykonał i zmienił wartość zmiennej.

Pozostało 580 znaków

2019-05-12 22:24
0

Co to znaczy nie działa według CIebie?

Dostajesz komunikat, że błąd jest w linii 19, błąd mówi o dzieleniu przez 0. Dlaczego tak? Ponieważ używasz % czyli reszta z dzielenia przez.
n % d oznacza, że program musi podzielić n przez d, a w linii 10 u CIebie d jest równe 0.

Pozostało 580 znaków

2019-05-12 22:28
0

Kurde ta Java jest taka dziwna i pokręcona. To czemu jak zamiast p użyję 1 to wszystko śmiga ?
https://zapodaj.net/3b9ec8d1900b1.jpg.html
@kixe52
Ale Używam przecież && AND. Powinien sprawdzić pierwszą wartość czyli false i nie dzielić.

Pozostało 580 znaków

2019-05-12 22:30
1
szrot napisał(a):

@kixe52
Ale Używam przecież && AND. Powinien sprawdzić pierwszą wartość czyli false i nie dzielić.

Na pewno? Ja tam widzę & a to jest w ogóle inny operator :)

Co do pierwszego pytania, odpowiedziałem Ci już na pw jak mnie zapytałeś.
Różnica jest taka, ze podając tam p > 0, program jeszcze nie dokonał kompilacji i nie wie, że p jest równe jeden. Skoro tego nie wie, to może być tak, że ten if nie zostanie spełniony i c nie dostanie żadnej wartości. Wtedy przy próbie wyświetlenia c byłby problem.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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