Zmienne
Przykład użycia
Zapisując kod programu sporo elementów będzie się w nim powtarzało. Załóżmy, że chcemy kilka razy wyświetlić taką samą wartość, ale w nieco innym kontekście.
class Variables {
public static void main(String[] args) {
System.out.println("Masz 19 lat.");
System.out.println("19 lat to piękny wiek.");
System.out.println("Dodatkowo 19 to liczba pierwsza.");
System.out.println("Liczba która następuje po 19 to 20");
}
}
Jak widzisz liczba 19 pojawia się w kodzie wielokrotnie. Jeżeli chcielibyśmy zmienić teraz liczbę 19, np. na 13, to musimy to robić w wielu miejscach kodu. Jest to niewątpliwie mało wygodne, a program ma dopiero 4 linijki.
Tworzenie zmiennych
Do rozwiązania tego problemu możemy wykorzystać zmienne, czyli specjalny element języka, który pozwala przechowywać wartości, a następnie odwoływać się do nich po nazwach. Proces tworzenia zmiennej możemy podzielić na dwa etapy:
- deklaracja - tutaj określamy typ i nazwę zmiennej,
- inicjalizacja (nazywana też często inicjacją)- nadanie wartości zmiennej.
Wcześniejszy program możemy więc zapisać w taki sposób:
class Variables {
public static void main(String[] args) {
int age;
age = 19;
System.out.println("Masz " + age + " lat.");
System.out.println(age + " lat to piękny wiek.");
System.out.println("Dodatkowo " + age + " to liczba pierwsza.");
System.out.println("Liczba która następuje po " + age + " to " + (age+1));
}
}
W klasie Variables znajduje się metoda main(), od której rozpocznie się działanie programu. Na początku deklarujemy zmienną, czyli określamy jej typ (int) i nazwę (age), a następnie ją inicjujemy, czyli zapamiętujemy w niej wartość 19. Jeżeli w dalszej części programu odwołasz się teraz do zmiennej age po jej nazwie, to w jej miejsce zostanie podstawiona wartość 19.
Deklarację i inicjalizację najczęściej łączy się razem i zapisuje w jednym wierszu:
class Variables {
public static void main(String[] args) {
int age = 19;
System.out.println("Masz " + age + " lat.");
System.out.println(age + " lat to piękny wiek.");
System.out.println("Dodatkowo " + age + " to liczba pierwsza.");
System.out.println("Liczba która następuje po " + age + " to " + (age+1));
}
}
Działanie programu pozostaje bez zmian, ale jeżeli teraz chcesz zmienić wyświetlaną liczbę/wiek, to zmiany należy dokonać tylko w jednym miejscu w kodzie programu.
Schemat definiowania zmiennej jest następujący:
typ nazwaZmiennej = wartość;
Możemy deklarować kilka zmiennych obok siebie, a także przypisywać już zainicjowanej zmiennej do innych zmiennych. Wszystko to ukazuje poniższy przykład.
class Variables {
public static void main(String[] args) {
int number1 = 5;
int number2 = number1;
System.out.println(number1 + number2); //10
number1 = 10;
System.out.println(number2); //5
double number3, number4;
number3 = 5.0;
number4 = 3.3;
System.out.println(number3); //5.0
System.out.println(number4); //3.3
}
}
Ważne jest to, że operacja number2=number1 , jest jednorazowa. Oznacza to, że jeżeli do number1 przypisaliśmy w dalszej części programu wartość 10, to nie ma to wpływu na wartość zmiennej number2, która nadal przechowuje wartość 5.
Czas więc napisać coś użytecznego, będzie to program dodający 2 liczby całkowite.
class Calculator {
public static void main(String[] args) {
int a = 5;
int b = 3;
System.out.println("a+b = " + (a + b));
}
}
Deklarujemy i nadajemy wartość dwóm zmiennym całkowitoliczbowym a i b , a następnie wyświetlamy wynik tego działania. Zwróć uwagę jak tym razem działa operator +, tekst umieszczony w cudzysłowie jest wyświetlany w normalnej formie natomiast wynik jako suma dwóch liczb. Jest to spowodowane tym, że plus służy do konkatenacji (łączenia) napisów.
Zmienne finalne
Zmienne możesz poprzedzić słowem kluczowym final . Zadeklarowana w ten sposób zmienna może być tylko raz (w dowolnym miejscu) zainicjowana i będzie się nazywała zmienną finalną. Próba przypisania do niej wartości po raz drugi zakończy się błędem i program nawet (na szczęście) nie przejdzie kompilacji.
class Variables {
public static void main(String[] args) {
final double liczbaPi=3.14;
final int finalna2;
finalna2=3; // tak można zrobić - pierwsze przypisanie
liczbaPi=8; //błąd, zmienna była zainicjowana
}
}
Łańcuchy znaków (Stringi) deklarujemy tak jak inne zmienne lub zmienne finalne, podając najpierw typ String (pisany dużą literą), a inicjacji możemy dokonać podając jakiś tekst zapisany w cudzysłowie.
Istotną rzeczą jest to, że Stringów nie da się bezpośrednio modyfikować. Na szczęście da się to na kilka sposobów ominąć. Jak już wspomnieliśmy na łańcuchach możemy dokonywać łączenia, czyli konkatenacji przy użyciu operatora +.
class TextVariables {
public static void main(String[] args) {
String hello = "Witaj ";
String world = "Świecie!";
String powitanie = hello + world; //łączenie dwóch napisów
System.out.println(powitanie);
String czesc = powitanie.substring(0, 6) + "uczniu";
System.out.println(czesc);
}
}
W powyższym przykładzie zapewne zaskoczeniem dla Ciebie może być metoda substring(). Po działaniu programu łatwo się domyślić jakie jest jej działanie. Mianowicie zwraca ona fragment napisu zaczynając od indeksu podanego jako pierwszy parametr (u nas 0) i kończąc przed indeksem podanym jako drugi parametr pomniejszonym o 1. W Javie prawie wszystko numeruje się od zera, co czasami bywa kłopotliwe, ale jako programista musisz się do tego przyzwyczaić.
Dyskusja i komentarze
Masz pytania do tego wpisu? Może chcesz się podzielić spostrzeżeniami? Zapraszamy dyskusji na naszej grupie na Facebooku.
Poniżej znajdziesz archiwalne wpisy z czasów, gdy strona była jeszcze hobbystycznym blogiem.
YeeeZooo
Dla tych co maja problem z metodą substring może się przydać http://download.oracle.com/javase/6/docs/api/java/lang/String.html#substring(int,%20int)
Boholt
Dzięks za link, w końcu zajarzyłem :D
Remik
System.out.println(liczba3) System.out.println(liczba4) w kodzie brakuje średników na końcu
Keymaker
Witam, chcialem cos takiego zrobic jak ponizej ale kompilator zglasza cannot find symbol przy reader.readString(); import TerminalIO.KeyboardReader; public class Stringi_1 { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here KeyboardReader reader = new KeyboardReader(); String hello = "Witaj"; String world = " w programie!"; String powitanie = hello+world; String imie; System.out.println(powitanie); System.out.println("Podaj swoje imię:"); imie = reader.readString(); String czesc = powitanie.substring(0, 5)+ imie; System.out.println(czesc);
Keymaker
Ma byc "readLine" jednak :P
Mateusz
Jestem za tępy na javę :D ale idę na następną lekcję XD
wokm
Nie do końca rozumiem mnogość przykładów i klas o tych samych nazwach,ale pewnie się okaże że to nie ma znaczenia, albo się okaże później dlaczego tak a nie inaczej ;)
Kamil
Ja też tego za bardzo nie rozumiem
Slawek
To jest jeszcze proste, w każdym innym języku wygląda praktycznie identycznie, jedynie syntaktyka się zmienia. Najgorzej sobie wyobrazić co to klasy i obiekty. Jak już się to zrozumie, to rozumie się Javę :)
Genuaa
Czy to wszystko należy umieścić w jednym dokumencie, czy mogłabym poprosić o to jak to ma w całości wyglądać?
Genuaa
i czy nie ma jakiegoś kompilatora który nie zmuszałby do zapisywania dokumentów, tylko od razu pozwalał oglądać skutki pracy, (to moja pierwsza styczność z Javą więc proszę o wyrozumiałość)
Slawek
Generalnie plik zapisany z rozszerzeniem java, który zawiera wyrażenie: class{ } jest w pełni poprawnym i kompletnym zapisem. Wykonywanie programu rozpoczyna się od metody(funkcji) main(). Przymierzam się do opisania eclipsa i innych środowisk, jest tam wbudowana konsola, więc zobaczysz to samo co po skompilowaniu w konsoli windows, czy terminalu linuksa.
Davee
Proponuję używać najnowszej wersji NetBeans'a. Byłem zypełnie zielony z Javy a ten program wyłapuje błędy oraz podpowiada co zrobić.
WBAR
Eclipse tez i lepiej nowym sie uczyc Eclipsa bo jednak EE pisze sie czesciej przy uzyciu Eclipsa (mnogosc wtyczek) a kto opanuje juz Eclipsa i w miarę Mavena to polecam Intellij IDEA
Sławek Ludwiczak
IntelliJ ma tylko jeden minus, którym jest stosunkowo wysoka cena do zastosowań komercyjnych :)
chrispos
Zmienne Po woli przejdziemy do czegoś ciekaws... Powoli pisze sie razem;)
Zbyszek
Zadanie uruchomiło się bez problemu.
.......
O co chodzi z tym substring? Nic nie rozumiem.
Witek
A dokładnie czego nie rozumiesz ????
Kamil
<blockquote> <a href="#comment-580" rel="nofollow"> <strong><em>.......:</em></strong> </a> O co chodzi z tym substring? Nic nie rozumiem. </blockquote> Substring to takie wirtualne nożyczki, które wycinają tekst od znaku podanego najpierw do znaku podanego jako drugi. Czyli substring(0,10) - wytnie znaki zaczynając kolejno od 0 (który jest właściwie pierwszym) do 10. Przykład: String esyfloresy = "trele morele"; substring(3,9) będzie wyglądał tak: "le more". Wycięliśmy od znaku 3 do 9.
Valdy
Właściwie to "le mor", bo spacja też się liczy.
pawelkon
Dzieki Kamil Bardzo obrazowo to wyjasniles bo w sumie to tez mialem z tym problem :( Pozdrawiam Pawel
Szymon
Niestety, ale zarówno mój program jak i rozwiązanie się nie kompiluje.
Paweł
Trzeba rozbijać komendy printout jeśli ma być ujęte dodawanie? int liczba = 5; int liczba2 = liczba; System.out.println("Liczba A: "+liczba+"\nLiczba B: "+liczba2); System.out.println("Suma liczb A i B: "+liczba+liczba2); Daje mi wynik: Liczba A: 5 Liczba B: 5 Suma liczb A i B: 55 A gdy będzie: System.out.println(liczba+liczba2); Liczba A: 5 Liczba B: 5 10 Dałoby się zrobić to w jednej linijce do out.print?
Adam
Napisałeś: System.out.println(„Suma liczb A i B: „+liczba+liczba2); A powinno być: System.out.println("Suma liczb A i B: "+(liczba+liczba2)); Nie dałeś nawiasów, dlatego samiast "10" wychodziło Ci "55". Żeby zmieścić linijki: System.out.println(„Liczba A: „+liczba+”\nLiczba B: „+liczba2); System.out.println(„Suma liczb A i B: „+liczba+liczba2); w jednej możemy napisać: System.out.println("Suma liczb A "+liczba+" i B "+liczba2+" wynosi: "+(liczba+liczba2); Rozumiem, że pierwsza linijka to poinformowanie użytkownika jakie wartości mają liczby A i B, natomiast druga to obliczenia. Przepisz to i sprawdź, czy jest tak, jak chciałeś by było.
Gawa
Wydaje mi się, że w tekście jest błąd: "Jeśli zmienimy wartość zmiennej liczba1, to liczba2 nie zmieni swojej wartości." Jak się zmienia wartość liczby1 to automatycznie się zmienia wartość liczby2.
Slawek
W Javie się nie zmieni. Przypisanie liczba2=liczba1, jest niemal równoznaczna z przypisaniem w stylu liczba2=5.
Gawa
Jak np. przypiszę liczba1=5, liczba2=liczba1( to zmienna liczba2 też będzie się równała 5) to suma wyjdzie 10. Natomiast jeśli zmienię na liczba1=8 to suma wyniesie 16 więc wartość liczby2 też się zmieni.
Slawek
chyba się nie zrozumieliśmy. liczba1=5; liczba2=liczba1; //tutaj zarówno liczba1 i liczba2 = 5. liczba1 = 8; //tutaj liczba1=8, a liczba2 nadal 5. To, że suma się zmieni, gdy na początku będzie inna wartość zmiennej to raczej oczywiste.
Witek
Witam Wyszło Ci np.: 16 bo liczba1 = 8 , skoro liczbe1 o tej wartości przypisałeś do liczby2, czyli teraz liczba2 = 8 i wykonałeś sumowanie to otrzymałeś taki wynik. Wszystko się zgadza
Gawa
Dobra, już kapuję. Przypisujemy nową wartość do liczba1 a nie ją zmieniamy. liczba1=5; // tu nie zmieniamy wartości liczba2=liczba1; liczba1 = 8; //tutaj dopiero przypisujemy nową wartość Małe nieporozumienie językowe :)
Przemek
Hej Nie zaczynaj nazw zmiennych od cyferki, potem te cudzysłowy musiałem wszystkie popoprawiać (masz „wszystkich” - a powinno być "wszystkich") no i masz błąd w printIn - duże I zamiast małego l, jak Ci się to wszystko wyświetli to zobaczysz o czym warto pamiętać - ale to na finiszu eksperymentu:) Pozdrawiam
mati
Witam wszystkich Mam problem po wpisaniu java Test.java pojawia mi sie: error: could not find or load main class java Dodam że do tej pory nie było problemu a literówka jest poprawna i nazwy pliku też Co mam z tym zrobic?
Slawek
Polecam powrót do pierwszej lekcji, czytanie i tak w kółko, aż się nie przeczyta ze zrozumieniem :)
Bodkin
wpisz java Test (bez ".java")
Darchiv
Pokusiłem się o bardziej kompaktowe rozwiązanie: String text1 = "Java ", text2 = "jest...", text3 = " fajna!", text4 = text1 + text2 + text3; System.out.println(text4); System.out.println(text4.substring(0, text1.length()+text2.length())); Myślałem, że pierwsza linijka będzie błędna, a ładnie się skompilowała. Może i użyłem innych zmiennych, ale nie użyłem ich bezpośrednio do wyświetlania. W Pawn'ie na szybkość wykonywania kodu mają znaczenie niepotrzebne białe znaki, np. przy znakach "=". A w Javie? A jak z cudzysłowiami? Czy tak jak w PHP i tutaj można używać apostrofów, żeby przyśpieszyć działanie, jeśli jakoś tekst jest jeszcze procesowany?
Mateuszek
Szczerze to nie rozumiem za bardzo zadania. Troszkę jakoś tam łapie wyrazy w ćwiczeniu ale jak idzie dalej to zdanie to tym bardziej nie zrozumiałe to :P A wydawałoby mi się, że już zaczynam rozumieć.
Mateuszek
Po przeczytaniu powyższego postu nad moim stwierdziłem, że to łatwe :D hehe
cyk
mam problem, napisałem powyższy program ale po wpisaniu w linii komend polecenia javac zwraca mi błędy w kodzie. Nawet jak skopiuję żywcem kod ze strony to też zwraca błędy ;/ "Test.java:3: error: incompatible types String hello = "Witaj "; ^ required: String found: java.lang.String Test.java:4: error: incompatible types String world = "îwiecie!"; ^ required: String found: java.lang.String Test.java:5: error: bad operand types for binary operator '+' String powitanie = hello+world; //│╣czenie Stringˇw" no i nie wiem co robic...
Witek
Witam Miałem kiedyś podobny problem z kodem, który przekopiowałem. Z tego co widzę to musisz po prostu ręcznie poprawić cudzysłów, jak widzisz jest on źle przekopiowany porównaj z przykładem i sam dostrzeżesz błąd o którym mówię. Pozdrawiam.
xyxyxyxy
mam ten sam problem i nie rozumiem różnicy między jednym cudzysłowem,a drugim,HELP?
endy19
czesc chlopaki.Po to tutaj jestesmy zeby pisac sami kody a nie kopiowac i wklejac.Niezle mi idzie czasem sie blokuje na wlasnych bledach ale daje rady jak nalezy.Powodzenia chlopaki:)
Miki
Siemka. Widze ze rozumiesz ta cala metode substring.. czy moglbys mi ja wytlumaczyc jakos ? MIanowicie niewiem z kad i co robia cyfry 0,7 (w twoim przykladzie) oraz za co substring odpowiada ?
zaor23
po pierwsze zaczalem szkolic sie dzis. po drugie lopatologicznie musisz zrozumiec ze w tym jezyku pierwsza liczba to 0 a nie jeden trzecia sprawa substring dziala jak nozyczki i wycina od poczatku wskazania w tym przypadku 0 do konca wskazania czyli jak tu 7. O czyli pierwszy wstawiony znak wartosci czyli J i 7 czyli spacja za wyrazem jestem .policz sobie jakbys chcial przed zmeczony wstawic wyraz "pak Dzi" to cyfry beda (18,25) czaisz z elekka czy mam wytlumaczyc jak wytrzezwieje ?
Mateusz
public class piec { public static void main(String[] args) { int a=5; int b=3; System.out.println("Wynik:\n"+a+"+"+b+"="+(a+b)); } } Tak wygląda dużo ładniej. Pozdro =)
Chasil
Powoli do przodu :)
sakuwbarakushow
Witam, A jest jakaś inna metoda do wyświetlania tekstu w konsoli procz System.out.println() która nie załamuje linii ? Chodzi o to że jak mam jakąś pętle for i w każdej mam System.out.println to wartość mam w nowej linii a nie w tej samej .
Jędrzej
System.out.print
kmiotek
Elegancki kurs. Terminologia zawiła, ale się pokombinuje i wszystko działa jak powinno ;) Oby tak dalej Sławek. Nie zrażaj się niektórymi komentarzami, które z miejsca konotują się z tekstem o studiach informatycznych i większości studentów. :) Pozdrawiam.
Adam
Heh coraz lepiej mi idzie :D! zaczynam coraz to więcej rozumiec :x.. na początku miałem problem z Typami danych ale dałem rade ;x
panstudent
O co chodzi w tych substringach - skąd to 0, skąd te 6? Jakie parametry, jakie indexy? Nie rozumiem czego miałoby to dotyczyć :o
Sławek Ludwiczak
Dokładnie są to indexy Stringa (zakres) jaki chcemy wyciąć.
Patryk
Kurczę... Jak ja chciałbym już pojąć Jave :(
Robert
Witam Raczkuję dopiero w temacie programowania w Javie, ale stwierdzam że kurs jest rewelacyjny. Czasami mam problem z kompilacją , a mianowicie kod programu przepisany w notatniku kropka w kropkę w porównaniu do kodu na stronie kursu nie da się kompilować, natomiast kod skopiowany ze strony działa poprawnie. Co może być powodem takiego problemu? kod który się nie kompiluje: informacja z kompilatora: D:\>javac Test2.java Test2.java:10: cannot find symbol symbol : method pintln(java.lang.String) location: class java.io.PrintStream System.out.pintln(czesc); ^ 1 error Może koledzy podpowiecie co jest nie tak Pozdrawiam Robert
Sławek Ludwiczak
Problemem jest to, że kod wcale nie jest przepisany kropka w kropkę, bo zjadłeś 1 literkę w p<b>r</b>intln. Kolejne długie komentarze wklejaj proszę na forum, thx.
Janusz 1120
Witam chciałem zrobić coś takiego: public class Tekst{ public static void main(String[] args){ String a = "Siemanko "; String b = "Witam "; String c = "wszystkim "; String d = "jestem "; String e = "tutaj "; String f = "nowy!"; String powitanie = a+b+c+d+e+f; // Laczenie Stringojaw System.out.println(powitanie); String czesc = powitanie.substring(0, 9); String czesc2 = powitanie.substring(16, 44); System.out.print(czesc+czesc2); } } Jednak najwyraźniej to nie o to chodzi. A mi chodzi o to żeby wyciąć prawie cały tekst oprócz słowa Witam. Podpowiecie mi co robię źle i jak to naprawić???
Damian
błąd: "java.lang.StringIndexOutOfBoundsException: String ind ex out of range: 44" oznacza, że wyszedłeś poza ostatni index tego stringa (wskazujesz na miejsce poza obszarem jaki zajmuje), czyli źle policzyłeś znaki :). Wywołaj sobie powitanie.length() - funkcja length() zwróci długość Twojego ciągu znaków (int), liczba o 1 mniejsza to numer ostatniego znaku. PS. Polecam nie panikować na widok tych groźnych czerwonych napisów, one często wyjaśniają swoje niespodziewane odwiedziny ;].
Janusz 1120
Dzięki wielkie. Nie zauważyłem :d A leniwy jestem i nawet dobrze nie przeanalizowalem błędu. Będę bardziej się starać . Dzięki :D
Janusz 1120
@up. Oczywiście cudzysłów jest na górze nie wiem dlaczego wkleiło na dole. wyskakuje mi coś takiego po skompilowaniu : Siemanko Witam wszystkim jestem tutaj nowy! Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String ind ex out of range: 44 at java.lang.String.substring(Unknown Source) at Tekst.main(Tekst.java:12)
Łukasz
Tak zadziała jak chcesz: (jeśli rozumiem o co ci chodzi) public static void main(String[] args){ String a = "Siemanko "; String b = "Witam "; String c = "wszystkich "; String d = "jestem "; String e = "tutaj "; String f = "nowy!"; String powitanie = a+b+c+d+e+f; // Laczenie Stringojaw System.out.println(powitanie); String czesc = powitanie.substring(0, 9); String czesc2 = powitanie.substring(15, 23)+"m " +d+e+f; System.out.print(czesc+czesc2); } }
Mroczny
public class Test { public static void main(String[] agrs) { String buy = "Kipue "; String car = "Samochód!"; String qest = buy + car; System.out.println(qest); String may = "Sprzedam" + qest.substring(5, 15); System.out.println(may); } } //A ja pokombinowałem i odwróciłem :D wyszło co chciałem :D
lolo
Napisałeś: "Istotną rzeczą jest to, że Stringów nie da się bezpośrednio modyfikować. Na szczęście da się to na kilka sposobów ominąć." Nie rozumiem do końca o co chodzi z tym, że nie można bezpośrednio modyfikować Stringów. Gdy piszę: String hello = "Witaj "; hello = hello + "Alex"; System.out.println(hello); To kod się kompiluje i wykonuje się poprawnie. Tak samo gdy napiszę: String hello = "Witaj "; hello = "Alex"; System.out.println(hello);
Sławek Ludwiczak
W linijce hello = hello + „Alex”; tworzysz i przypisujesz do referencji "hello" zupełnie nowy obiekt typu String. Więcej wytłumaczone jest w tej lekcji: http://javastart.pl/klasy/string-stringbuffer-i-stringbuilder/
Me
A po co tyle pisania skoro zamiast String hello = "Witaj" ; hello = "Alex" ; wyświetli się Alex więc można zapisać w postaci public class Stale{ public static void main(String[] args){ String hello = "Witaj" ; hello = "Alex" ; System.out.println(hello); w podobny sposób zauważyłem z poprzednimi przykładami które to często lecz niezawsze musiałem przeinaczać po swojemu żeby wogóle zadziałały w cmd dlaczego tak się dzieje ?
Gabi
String czesc = powitanie.substring(0, 6)+"uczniu"; Moim zdaniem powinno być (0,5), bo szósty znak to już mi łapie S od Świecie. :)
Drelka
@Gabi <blockquote> <a href="#comment-12504" rel="nofollow"> <strong><em>Gabi:</em></strong> </a> String czesc = powitanie.substring(0, 6)+”uczniu”; Moim zdaniem powinno być (0,5), bo szósty znak to już mi łapie S od Świecie. </blockquote> apropo substring: cyt.: "zwraca ona „pod string” zaczynając od indeksu podanego jako pierwszy parametr (u nas 0) i kończąc przed indeksem podanym jako drugi parametr -1." zwroc uwage na koncowke zdania: DRUGI PARAMETR -1 pewnie string hello brzmi u Ciebie "Witaj", a nie "Witaj " (spacja na koncu również jest brana pod uwagę jako znak, który wychwytuje substring) pzdr
Cenny
public class Cenny{ public static void main(String[] args){ String x="Ala "; String y="ma "; String z="kota"; String d="e"; String e=" "; String zdanie=x+y+z; System.out.println(zdanie); System.out.println(z.substring(0, 3)+e+y+x.substring(0, 2)+d); } } Taki mój mały kodzik. Jave zacząłem dosłownie godzinę temu. Miałem zero styczności z językami. Powiedzcie jak wyszło. Wiem ze da się zwyczajnie dać więcej Stringów i wyjdzie to samo. Wolałem przekombinować.
Uczeń
twój kod ma błąd przynajmniej tak mi pokazuje po kompilacji....
Cenny
Mi wszystko działa ;)
Uczeń
mam pytanie czemu nie działa mi ten kod: public class Stałe{ public static void main(String[] args){ final int STALA1; final int STALA2; final int STALA3; STALA1=WITAJ; STALA2=moj; STALA3=nauczycielu; System.out.println(STALA1); System.out.println(STALA2); System.out.println(STALA3); } } czy przez takie nadanie nie czyta znaków tylko liczmy bo jak mam taki kod: public class Stale{ public static void main(String[] args){ final int STALA1; final int STALA2; final int STALA3; STALA1=1; STALA2=2; STALA3=3; System.out.println(STALA1); System.out.println(STALA2); System.out.println(STALA3); } } to działa
snt.banzai
nie możesz do danych typu "int" przypisywać wyrażeń (słów), a jedynie liczby
Uczeń
Oto mój kod jestem uczniem 1 gimnazjum i zaczynam to ogarniać rok temu próbowałem ale zablokowałem się na lekcji o typach danych bo nic nie ogarniałem teraz lepiej mi idzie i z podglądem na twoje kody podane w tej lekcji napisałem ten działający program zachęcam do kompilacji i sprawdzenia. :D public class Zadanie12{ public static void main(String[] args){ String a = "Twoje "; String b = "lekcje "; String c = "rządzą "; String d = a+b+c; System.out.println(d); String e = d.substring(0, 12)+" lubię"; System.out.println(e); } }
jaHolden
Cześć, A czy można dodawać do siebie zmienne różnego typu? int a = 3; double b = 4.0; int c = a+b; Kompilator informuje mnie, że oczekuje int. Czy to kwestia zapisu czy brak możliwości takiego łączenia?
Marcin Kunert
Kompilator protestuje, ponieważ w tym wypadku tracona jest dokładność. Jaka powinna być wartość c, jeśli b = 0.5? Możesz wymusić utratę dokładności poprzez rzutowanie: int c = a+ (int) b; Spowoduje to "odcięcie" wartości dziesiętnej z b.
Mariusz
d:\java_kurs>javac Text.java Text.java:4: possible loss of precision found : double required: float float firstFloat = 30.11; Dlaczego w przypadku gdy chcę wpisać wartość 30.11 do zmiennej float to kompilator wyświetla to jako błąd. O jakiej precyzji jest tu mowa. Jednak jeżeli użyję zmienną double to wszystko gra. Wydaj mi się że zmienna 30.11 mieści się w zakresie zmiennej float
n0ne
daj liczba literkę f i będzie śmigać float firstFloat=30.11f
Marek
Pytanie także o typ float: jak deklarować zmienne typu float ? Chodzi o przypisanie im wartości. Deklaracja dla liczb całkowitych tj. : float liczbaFloat = 10; // zapis jest ok i dokonuje konwersji - zamiany typów natomiast float liczba2Float = 10.0; // kompilator widzi zapis 10.0 jako double i ma problem z precyzją Jak dookreślić precyzję prawej strony przypisania ?
Marek
W sumie sam sobie odpowiem ( dwa posty powyżej jest odpowiedź Marcina Kunerta) przypisanie do float można zrobić przez 'rzutowanie' typu tj. float liczba2Float = (float) 10.0 ; Przyznam, że wygląda to dziwnie. Kompilator powinien 'łyknąć' takie przypisanie wartości: 10.0 do zmiennej typu float . Czy kompilator wszystkie jawnie podane wartości rzeczywiste ( liczby z kropką ) domyślnie traktuje jako double ?
n0ne
ale nie trzeba rzutować przy deklaracji! Wystarczy ze dopieszesz na koncu za liczba f float liczbax=10,123f Dlaczego tak a nie inaczej znajdziesz tutaj: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
Tomek 75
mam problem z wyświetlaniem polskich znaków cmd zastępuje jakimiś krzaczkami
Janosch
Spróbuj tak: 1. We właściwościach CMD zmień czcionkę na Lucida console 2. Wpisz w cmd: "chcp", pojawi Ci się aktywna strona kodowa, jeżeli masz 1250, to nie będziesz miał polskich znaków. Zmień ją na 852 poleceniem "chcp 852". Powinno być dobrze, ale to jest jednorazowe. Jeżeli chcesz na stałe musisz dodać do rejestru wpis: regedit -> HKEY_CURRENT_USER\Console -> dodaj wartość DWORD o nazwie CodePage i ustaw wartość dziesiętną 852. Być może przyda się restart.
Tomek 75
Dziwne bo miałem ustawioną wartość 852 ,ale w/g twoich instrukcji zmieniłem w rejestrze na 1250 i teraz mam polskie znaki. Dzięki za pomoc
Tomek
Dlaczego jak wpisuje public class Kalkulator{ public static void main(String[] args){ int a=5; int b=3; System.out.println("a+b = "+(a+b)); } } OTWIERA MI SIĘ NOTATNIK Z TYM PLIKIEM ?
Me
A gdzie to wpisujesz?
xoder
Link nie działa (ten z dodatkowym zastosowaniem stringów).
opalony181
Oki string "int" rozumiem, ale co oznacza "double", Nie został opisany choć go użyłeś. Czy to jest to samo co "Int" tylko, że można przypisać dwie zmienne? A tak w ogóle to zarombiście zrobiony kurs :) Aż chce się człowiekowi uczyć :P
lolo
int jest to typ zmiennych przechowujących wartości całkowite jak: 6, 12, 36 itp. float i double są to zmienne które przechowują wartości typu zmiennoprzecinkowego czyli wartości 1,2; 6,66; 3,14; 3,005. Przy czym zmienne double jest typem podwójnej precyzji co znaczy, że może przechowywać dwa razy więcej liczb po przecinku niż float.
ArkSze
public class Zadanie12 { public static void main(String[] args) { int a = 2; double b = 5.25; final double PI = Math.PI; final int c = 30; String imię = "Jan "; String nazwisko = "Nowak "; String uczelnia = "AON Warszawa "; String dane = imię+nazwisko+uczelnia; //Przy próbie przypisania zmiennym PI i c innych wartości wyskoczyły błędy //double PI = 23; - wyskoczył błąd "Duplicate local variable PI // int c = 25 - wyskoczył błąd "Duplicate local variable c System.out.println("int a = "+(a)); System.out.println("double b"+(b)); System.out.println("stała PI "+(PI)); System.out.println("stała c "+(c)); System.out.println(dane); String rozwiązanie = dane.substring(0, 9); System.out.println(rozwiązanie); } }
ArkSze
To jest moja propozycja rozwiązania zadania 1.2 - pozdrawiam