INTERFAOLLIK
Shunday qilib, biz o'zgaruvchilar va ma'lumotlar turlari bilan ishlash asoslarini ko'rib chiqdik . Keling , foydalanuvchilardan ma'lumot oladigan, ma'lumotlarni o'zgaruvchida saqlaydigan va foydalanuvchilarga xabarni chop etadigan dastur yozaylik. Axir, agar u foydalanuvchi
bilan muloqot qila olmasa, kompyuter dasturidan nima foyda?
5.1. CHIKARISh operatorlari
Biz allaqachon 2 va 4-boblarda xabar chiqarish misollarini ko'rganmiz.
Oddiy qilib aytganda, foydalanuvchiga natijalarni ko'rsatish uchun Java tomonidan taqdim etilgan print() yoki println() usulidan foydalanishingiz mumkin. Ushbu usullardan foydalanish uchun usul nomining oldiga System.out ni qo'yish kerak . Bu zarur, chunki ikkita usul PrintStream sinfiga tegishli va ularga kirish uchun System.out prefiksini talab qiladi. Agar biror narsa hozir tushunarsiz bo'lib tuyulsa ,
tashvishlanmang . Sinflar va usullar 7-bobda batafsil yoritilgan.
5.1. Chiqish bayonotlari 67
Println() va print() usullari shundan farq qiladiki, println() xabar ko'rsatilgandan so'ng kursorni keyingi qatorga o'tkazadi, print() usuli esa yo'q.
Masalan, buyruqni bajarishda
System.out.println("Salom"); System.out.println("Qandaysiz?");
quyidagi natijaga erishadi:
Salom Qalaysiz?
Agar biz belgidan foydalansak
System.out.print("Salom"); System.out.print("Qandaysiz?");
natija shunday bo'ladi:
Salom qaleysan?
Aks holda, ikkala usul ham bir xil bo'ladi.
Keling, xabarlarni chop etish uchun println() dan foydalanishning ba'zi misollarini ko'rib chiqaylik . print() usuli aynan bir xil ishlaydi .
ODDIY MATNLI XABARNI CHIKARISh
Oddiy xabarni chop etish uchun println() chaqiruvidan foydalaning:
System.out.println("Salom, mening ismim Jeymi.");
Natija:
Salom, mening ismim Jeymi.
68 5 -bob Interaktivlik
O'ZGARCHI QIMMAT KO'RSATI
O'zgaruvchining qiymatini ko'rsatish uchun o'zgaruvchi nomini argument sifatida bering. Aytaylik, bizda quyidagi o'zgaruvchi bor:
int raqami = 30;
Raqamning qiymati quyidagi buyruq bilan ko'rsatilishi mumkin:
System.out.println(raqam);
Natija:
o'ttiz
E'tibor bering, o'zgaruvchining nomi (raqami) qo'sh tirnoq ichida emas . Agar siz buyruqni bajarsangiz
System.out.println("raqam");
keyin qiymat o'rniga satr ko'rsatiladi
raqam
NATIJALARNI O'ZG'RGANNI TA'YoLASIZ KO'RSATISH
println () usulidan matematik ifoda natijasini bevosita chop etish uchun ham foydalanish mumkin , yoki
usuli.
Masalan, quyidagi buyruqni bajarayotganda
System.out.println(30+5);
natijaga erishasiz
35
Chiqish bayonotlari 69
Usul natijasini ko'rsatish uchun siz qo'ng'iroqdan foydalanishingiz mumkin
System.out.println("Oracle".substring(1, 4));
Bu buyruq substring() usulini chaqirish natijasini chop etadi . Chiqish satr bo'ladi
rac
BIRLASHTIRISH FOYDALANISH
Keling, ikkita yoki undan ko'p qisqaroq satrlarni birlashtirish orqali olingan murakkabroq satrlarning chiqishiga yana bir nechta misollarni ko'rib chiqaylik . Ushbu operatsiyani bajarish uchun + belgisi ishlatiladi (birlashtirish) .
Masalan, buyruqni bajarishda
System.out.println("Salom, " + "qalaysiz?" + Men Java-ni yaxshi ko'raman.");
"
natija olinadi
Salom qaleysan? Men Java-ni yaxshi ko'raman.
Satrlarni o'zgaruvchan qiymatlar bilan birlashtirish uchun siz forma konstruktsiyasidan foydalanishingiz mumkin
int natijalari = 79;
System.out.println("Siz test uchun " ball oldingiz.");
+natijalar+
"belgilari
Bu erda "Siz ball oldingiz" va "imtihoningiz uchun baholar" qatorlari. natijalar o'zgaruvchisi bilan birlashtiriladi . Buyruq quyidagi natijani beradi:
Siz test uchun 79 ball oldingiz.
70 5 -bob Interaktivlik
Nihoyat, satrlarni matematik ifodalar natijalari bilan birlashtirish mumkin:
System.out.println("50 va 2 ning yig'indisi " (50 + 2) + +
".");
Natija:
50 va 2 ning yig'indisi 52 ga teng.
E'tibor bering, bu misolda 50 + 2 matematik ifodasi qavs ichiga olingan. Ular natijani boshqa ikkita pastki qator bilan birlashtirishdan oldin kompilyator ifodani baholashi uchun kerak . Men buni har safar birlashtirish matematik ifodalar natijalari bilan satrlarni birlashtirganda qilishni tavsiya qilaman . Agar shunday qilmasangiz, bu xatoga olib kelishi mumkin.
XIZMAT TARTIBI
Endi xizmat ko'rsatish ketma-ketligini ko'rib chiqaylik. Ba'zan dasturlar maxsus "bosib bo'lmaydigan" belgilarni, masalan, yorliqlar yoki yangi qatorlarni chiqarishi kerak. Bunday holda, odatda boshqa ma'noga ega bo'lgan belgilardan qochish uchun \ (teskari chiziq) belgisini ishlatishingiz kerak.
Masalan, yorliq to'xtash joyini ko'rsatish uchun t belgisidan oldin teskari chiziq qo'yiladi: \t. \ belgisi
bo'lmasa , "t" harfi ko'rsatiladi. \ belgisi bilan tabu belgisi ko'rsatiladi.
Xizmatlar ketma-ketligi 71
lash. \t xizmat ketma-ketligi deyiladi . Agar siz buyruqni bajarsangiz
System.out.println("Salom\tWorld");
natija quyidagicha ko'rinadi:
Boshqa tez-tez ishlatiladigan yordamchi dastur izdoshlari
Xususiyatlari:
NEWLINE (\N)
Misol:
System.out.println("Salom\nDunyo");
Natija:
Salom
Dunyo
\ (\\) BIZNING O'ZI CHIKISHI
Misol:
System.out.println("\\");
Natija:
\
BIR BOSHQARA QO’SHAKCHA QO’SHIRCHA BELGINI (\") CHISIB BERING
LINE TO'XTIRISH sifatida talqin qilinmagan
Misol:
System.out.println("Bo'yim 5'9\"");
72 5 -bob Interaktivlik
Natija:
Mening bo'yim 5'9 dyuym
FORMATLASHTIRISH
Oldingi misollar println() va print() usullari yordamida ma'lumotlarni qanday chiqarishni ko'rsatdi . Biroq, ba'zida siz chiqish formatini aniqroq nazorat qilishingiz kerak bo'ladi . Masalan, buyruqni bajarishda
System.out.println("5,45 uchun javob 3 + (5,45/3) ga bo'lingan);
bu"
quyidagi natijaga erishadi:
3 ga bo'lingan 5,45 javobi 1,816666666666667
Aksariyat hollarda foydalanuvchiga unchalik ko'p kasrli belgilar kerak emas. Bunday vaziyatlarda Natijani ko'rsatish uchun printf() usulidan foydalanishingiz mumkin . printf() usuli println () usulidan biroz murakkabroq , lekin u chiqishni ko'proq boshqarish imkonini beradi. Yuqoridagi natijani
formatlash uchun siz buyruqdan foydalanishingiz mumkin
System.out.printf("%d ga bo'lingan %.3f uchun javob %.2f.", 5.45,
3, 5.45/3);
Natija quyidagicha ko'rinadi:
3 ga bo'lingan 5,450 javobi 1,82 ga teng.
printf() usuli bir yoki bir nechta argumentlarni oladi . Yuqoridagi misolda usulga to'rtta argument uzatiladi.
5.3. Chiqishni formatlash 73
Birinchi argument "%.3f ga %d ga boÿlinganda javob %.2f boÿladi". formatlash uchun satrni o'z ichiga oladi.
Siz satrda g'alati belgilarga e'tibor bergandirsiz : %.3f, %d va %.2f. Ular format spetsifikatsiyalari deb ataladi: ular chiqish satrida bo'sh joy ajratadilar va quyidagi argumentlar bilan almashtiriladi. Birinchi format spetsifikatsiyasi (%.3f) birinchi keyingi argument (5.45), ikkinchi (%d) ikkinchi argument (3) va hokazo bilan almashtiriladi.
Format spetsifikatsiyalari har doim foiz belgisi (%) bilan boshlanadi va konvertor bilan tugaydi (masalan, f yoki d). Ular o'rnini bosuvchi argumentlar qanday formatlanishi kerakligini belgilaydi. Foiz belgisi (%) va konvertor o'rtasida qo'shimcha ma'lumotlar joylashtirilishi mumkin - bayroqlar.
Bizning misolimizda birinchi format spetsifikatsiyasi %.3f dir.
f - transduser. U kompilyatorga argumentni suzuvchi nuqtali raqam bilan almashtirish kerakligini aytadi (ya'ni kasr qismi bo'lgan raqam - masalan, float
yoki ikki barobar). Agar siz uni boshqa raqam bilan almashtirmoqchi bo'lsangiz, xato xabari olasiz.
.3 - bayroq. Bu raqam 3 ta kasrli raqam bilan ko'rsatilishi kerakligini bildiradi . Shunday qilib, 5.45 raqami 5.450 sifatida ko'rsatiladi .
%.3f spetsifikatsiyasidan tashqari Java-da ishlatilishi mumkin bo'lgan boshqa ko'plab spetsifikatsiyalar mavjud. Keyingi ikki bo'limda boshqalar muhokama qilinadi
74 5 -bob Interaktivlik
spetsifikatorlarda tez-tez ishlatiladigan konvertorlar va bayroqlar .
TRANSDUKTORLAR
Butun son konvertori d
Butun sonlarni formatlash uchun ishlatiladi (masalan , bayt, short, int va long).
Misol:
System.out.printf("%d", 12);
Natija:
12
Eslatma: buyruqni ishga tushirishga urinayotganda
System.out.printf("%d", 12.9);
xatolik yuzaga keladi, chunki 12.9 butun son emas
raqam.
Xuddi shunday, System.out.printf("%f", 12);
xatoga yo'l qo'yadi, chunki 12 suzuvchi nuqtali raqam emas .
Yangi qator konvertori n Kursorni keyingi qatorga o'tkazadi. Misol:
System.out.printf("%d%n%d", 12, 3);
Chiqishni formatlash 75
Natija:
12
3
BAYROQLAR
Kenglik bayrog'i
Ushbu bayroq chiqishning kengligini aniqlash uchun ishlatiladi.
misol:
System.out.printf("%8d", 12);
Natija:
12
Ushbu misol 12 raqamidan oldin 6 ta bo'shliqni chop etadi , shunda umumiy chiqish kengligi 8 ga teng.
misol:
System.out.printf("%8.2f", 12.4);
Natija:
12.40
Ushbu misol raqamdan oldin 3 ta bo'shliqni chop etadi, shunda chiqishning umumiy kengligi (o'nlik ajratuvchi nuqta bilan) 8 ga teng bo'ladi.
Minglab ajratuvchi bayroq (,)
Bayroq raqamlar guruhlarini ajratuvchi bilan raqamlarni chiqarish uchun ishlatiladi.
76 5 -bob Interaktivlik
misol:
System.out.printf("%,d", 12345);
Natija:
12.345
misol:
System.out.printf("%,.2f", 12345.56789);
Natija:
12,345,57
FOYDALANUVCHIDAN MA'LUMOT OLISH
Endi siz foydalanuvchiga ma'lumotni qanday ko'rsatishni bilasiz, foydalanuvchidan ma'lumot olishni o'rganishingiz kerak. Aslida kirishni olish juda ahamiyatsiz. Buning bir necha yo'li bor, lekin eng oddiy va eng keng tarqalgani Skaner ob'ektidan foydalanishdir.
Foydalanuvchidan ma'lumot olish uchun avval Skaner sinfini quyidagi buyruq bilan import qilishingiz kerak :
import java.util.Scanner;
Keyin Skaner ob'ektini yaratishingiz va System.in ni argument sifatida topshirishingiz kerak.
System.in kompilyatorga siz standart kirishdan ma'lumot olishingiz kerakligini aytadi, bu esa
5.4. Foydalanuvchidan ma'lumot olish 77
odatda klaviatura. Agar sizda hali tajriba bo'lmasa
dasturlashda, ehtimol siz buni tushunmaysiz
bunday ob'ekt. Havotir olmang; sinflar va ob'ektlar 7-bobda muhokama qilinadi. Hozircha buni bilish kifoya
foydalanuvchidan ma'lumot olish uchun uni kiritish kifoya dasturda quyidagi buyruqni o'qing:
Skanerni o'quvchi = yangi Skaner(System.in);
Scanner sinfida bir nechta usullar mavjud
foydalanuvchi ma'lumotlarini o'qish uchun ishlatilishi
mumkin. Eng ko'p ishlatiladigan usullar: nextInt(), nextDouble()
int, double va String ma'lumotlar turlarini o'qish uchun nextLine() va
mos ravishda.
Ushbu usullar qanday ishlashini yaxshiroq tushunish uchun NetBeans-da InputDemo deb nomlangan yangi loyiha yarating. Agar NetBeans'da yangi loyihalar qanday yaratilganligini unutgan bo'lsangiz, Bo'limga qarang 2.2. Kodni quyidagi bilan almashtiring (satr raqamlari dasturning bir qismi emas va qulaylik uchun taqdim etilgan):
1 ta paketni kiritish demosi; 2 import java.util.Scanner;
3
4 umumiy sinf InputDemo {
5
6
7
sakkiz
9
o'n
umumiy statik void main(String[] args) {
Skaner kiritish = yangi Skaner(System.in);
System.out.print("Butun sonni kiriting: "); int myInt = input.nextInt();
System.out.printf("Siz %d.%n%n kiritdingiz", myInt);
o'n bir
12
13
System.out.print("Ikki kiriting: "); double myDouble = input.nextDouble();
78 5 -bob Interaktivlik
o'n to'rt
System.out.printf("Siz %.2f.%n%n kiritdingiz",
myDouble);
o'n besh
16
17
o'n sakkiz
19
System.out.print("Qatorni kiriting: "); input.nextLine();
String myString = input.nextLine(); System.out.printf("Siz \"%s\" kiritdingiz.
%n%n", myString);
yigirma
21 }
22}
2-qator java.util.Scanner sinfini import qiladi .
Keyin, 6-qatorda Skaner ob'ekti yaratiladi va kirish deb nomlanadi .
8-qator foydalanuvchidan butun sonni so'raydi . Keyin dastur nextInt() usulini chaqirish orqali butun sonni o'qiydi. Nihoyat, 10-qatorda foydalanuvchi kiritishi printf() usuli bilan chop etiladi.
12-14-qatorlarda shunga o'xshash narsa sodir bo'ladi, faqat bu safar foydalanuvchidan ikkilamchi qiymat so'raladi va keyingiDouble() usuli kirishni o'qish uchun ishlatiladi .
16–19-qatorlar foydalanuvchidan keyingiLine() usuli yordamida oÿqiladigan qatorni taklif qiladi.
Biroq, bu erda bir oz farq bor. 17 -qator qo'shimcha buyruqni o'z ichiga oladi:
input.nextLine();
Boshqacha qilib aytganda, nextLine() usuli ikki marta chaqiriladi (17 va 18-qatorlarda). Bu keyingiDouble() usuli 13-qatorda qanday ishlashi uchun zarur. Usul
5.4. Foydalanuvchidan ma'lumot olish 79
nextDouble() double o'qish bilan cheklangan . Lekin qachon foydalanuvchi raqamni kiritadi, u ham Enter tugmasini bosadi . Enter tugmasi asosan yangi qator belgisini ("\n") kiritadi, bu keyingiDouble usuli bilan e'tiborga olinmaydi, chunki u dublning bir qismi emas . nextDouble() usuli yangi qator belgisini iste'mol qilmasligi aytiladi. Ushbu belgini ishlatish 17-qatordagi keyingi Line() usuliga qo'ng'iroq qilishni talab qiladi .
Agar siz 17-satrni o'chirib tashlasangiz va dasturni qayta ishga tushirsangiz, siz qatorga kira olmasligingizni ko'rasiz. Buning sababi, 18- qatordagi nextLine() usuli oldingi yangi satr belgisini iste'mol qiladi . Va bundan keyin boshqa nextLine() buyrug'i yo'qligi sababli, dastur foydalanuvchidan boshqa kiritishni kutmaydi.
NextDouble() usulidan keyin nextLine() usulini har doim ishlatganingizda , oldingi yangi satr belgisini iste'mol qilish uchun har doim qo'shimcha nextLine() usulini kiritishingiz kerak.
Xuddi shu narsa nextInt() usuli uchun ham amal qiladi. Ushbu dasturni ishga tushirishga harakat qiling va butun sonni kiriting, double va so'rov bo'yicha qator. Dastur shunday ishlashi kerak
kutilganidek.
Yuqorida aytib o'tilgan uchta usuldan tashqari, Java-da navbati bilan bayt, short, long, float va mantiqiy qiymatlarni o'qish uchun nextByte() , nextShort (), nextLong(), nextFloat() va nextBoolean() usullari ham mavjud .
Ushbu usullarning har biri to'g'ri ma'lumotlar turidagi
qiymatlarni o'qish uchun mo'ljallangan. Masalan, nextDouble() usuli
80 5 -bob Interaktivlik
dubl olishni kutmoqda . Agar foydalanuvchi kirmasa
to'g'ri ma'lumotlar turi qiymati, usul harakat qiladi
kirishni to'g'ri turga aylantiring. Agar urinish muvaffaqiyatsiz bo'lsa, usul xato haqida xabar beradi.
Misol uchun, agar nextDouble() usuli 20 qiymatini o'qisa , u dublga aylantiriladi . Ammo agar usul "salom" qatorini o'qisa, xato xabari yuboriladi.
Bunday xatolar yuzaga kelganda nima qilish kerakligi keyingi bobda muhokama qilinadi.
Machine Translated by Google
6
NAZORAT BUYRUQLARI
Oldingi boblarda siz ko'p narsalarni o'rgandingiz. Hozircha siz Java dasturlarining asosiy tuzilishini bilishingiz va o'zgaruvchilar yordamida oddiy Java dasturlarini yozishingiz kerak . Bundan tashqari, siz foydalanuvchilar bilan muloqot qilish uchun Java-ning o'rnatilgan usullaridan qanday foydalanishni ham o'rgandingiz .
Ushbu bob keyingi qadamni oladi - siz o'rganasiz
dasturingizdagi buyruqlarni bajarish ketma-ketligini qanday boshqarish mumkin. Buyruqlar sukut bo'yicha bajariladi tartibda, dastur boshidan oxirigacha, ular paydo bo'lish tartibida.
Biroq, bu tartibni boshqarish buyruqlari yordamida o'zgartirish mumkin.
Bu turkumga qaror qabul qilish buyruqlari (if, switch), sikl buyruqlari (for, while, do-while) va o‘tish buyruqlari (break, continue) kiradi. Ushbu buyruqlarning barchasi keyingi bo'limlarda muhokama qilinadi.
Biroq, avvalo, taqqoslash operatorlarini ko'rib chiqaylik.
6.1. Qiyoslash operatorlari
Ko'pgina boshqaruv buyruqlari solishtirishning qandaydir shakllaridan foydalanadi. Dastur taqqoslash natijasiga qarab u yoki bu bajarilish yo'lini tanlaydi.
Taqqoslash operatorlari 83
Barcha taqqoslash operatorlari ichida tenglikni tekshirish operatori eng ko'p qo'llaniladi . Agar siz ikkita o'zgaruvchining teng yoki yo'qligini bilmoqchi bo'lsangiz, == operatoridan foydalaning (ikki = belgisi ). Masalan, dasturga ifodani kiritish
x == y, siz dasturga x ning qiymati y qiymatiga teng yoki
yo'qligini tekshirishni aytasiz. Agar ular teng bo'lsa, u holda shart bajariladi va buyruq rost deb baholanadi. Aks holda, natija noto'g'ri bo'ladi.
Tenglik uchun ikkita qiymatni tekshirishdan tashqari, boshqaruv buyruqlarida ishlatilishi mumkin bo'lgan boshqa taqqoslash operatorlari ham mavjud .
Teng emas (!=)
Chap tomon o'ng tomonga teng bo'lmasa, true qiymatini qaytaradi .
5 != 2
6 != 6
Batafsil (>)
rost
yolg'on
Chap tomon o'ng tomondan kattaroq bo'lsa, true qiymatini qaytaradi .
5 > 2
3 > 6
Kamroq (<)
rost
yolg'on
Chap tomon o'ng tomondan kamroq bo'lsa, true qiymatini qaytaradi .
Katta yoki teng (>=)
Chap tomon o'ng tomondan kattaroq yoki unga teng bo'lsa, true qiymatini qaytaradi .
84 6 -bob Boshqarish buyruqlari
5 >= 2
5 >= 5
3 >= 6
rost rost yolg'on
Kichik yoki teng (<=)
Chap tomon o'ng tomondan kichik yoki teng bo'lsa, true qiymatini qaytaradi .
5 <= 7
7 <= 7
9 <= 6
rost rost yolg'on
Bundan tashqari , bir nechta shartlarni birlashtirish
uchun foydali bo'lgan ikkita mantiqiy operator (&&, ||) mavjud .
AND operatori (&&)
Agar barcha shartlar bajarilsa, true qiymatini qaytaradi .
5==5 && 2>1 && 3!=7 rost
5==5 && 2<1 && 3!=7 noto'g'ri, chunki ikkinchi shart (2<1) noto'g'ri
deb baholanadi
OR operatori (||)
Kamida bitta shart rost bo'lsa, true qiymatini qaytaradi .
5==5 || 2<1 || 3==7 rost, chunki birinchi shart (5==5) rost deb
baholanadi
5==6 || 2<1 || 3==7 noto'g'ri, chunki barcha shartlar noto'g'ri deb
baholanadi
QAROR QABUL QILISh JAMOALARI
Taqqoslash operatorlari bilan tanishib chiqqandan so'ng, keling, dasturni bajarish ketma-ketligini nazorat qilish uchun ushbu bayonotlardan qanday foydalanish kerak . Keling , if buyrug'idan boshlaylik .
6.2. Qaror guruhlari 85
IF-TEAM
if buyrug'i eng ko'p ishlatiladigan ketma- ketlik buyruqlaridan biridir. Bu dasturga ba'zi shartlarni tekshirish va tekshirish natijasiga qarab tegishli harakatni bajarish imkonini beradi.
If buyrug'i quyidagi tuzilishga ega (qulaylik uchun qator raqamlari qo'shilgan) :
1 agar ( 1-shart bajarilsa) 2 {
1>1>1>
Do'stlaringiz bilan baham: |