Metod int calc(int num1, int num2, char operatsiya)

|
Metod int calc(int num1, int num2, char operatsiya)
|
bet | 3/13 | Sana | 24.01.2024 | Hajmi | 103,17 Kb. | | #144805 |
Bog'liq adhambek11011107Metod int calc(int num1, int num2, char operatsiya) - num1 va num2 raqamlari ustida amalda belgilangan arifmetik amalni bajarishi kerak.
main() usuli 2 ta raqamni o'qishi kerak (getInt() yordamida), operatsiyani o'qish (getOperation() yordamida), hamma narsani calc() usuliga o'tkazish va natijani ko'rsatish kerak.
Shuning uchun, int getInt() usulida biz konsoldan raqamni o'qish va butun son kiritilgan yoki kiritilmaganligini tekshirish mexanikasini belgilab berdik.
1
2
3
4
5
6
7
8
9
10
11
12
|
public static int getInt(){
System.out.println("Введите число:");
int num;
if(scanner.hasNextInt()){
num = scanner.nextInt();
} else {
System.out.println("Вы допустили ошибку при вводе числа. Попробуйте еще раз.");
scanner.next();//рекурсия
num = getInt();
}
return num;
}
|
Va keyin oddiygina main() usulida biz int getInt() usulini 2 marta chaqiramiz, chunki foydalanuvchi 2 ta raqam kiritadi.
Esda tutingki, if-else konstruksiyasidan foydalanib, agar raqam butun son bo'lsa, foydalanuvchi kiritgan qiymatni num o'zgaruvchisiga belgilang va agar u butun son bo'lmasa, konsolda "Siz xato qildingiz" ni ko'rsating. raqam kiritilayotganda. Qayta urinib ko‘ring.”
Shuningdek, biz rekursiyani elseda ishlatganimizga e'tibor bering:
1
2
3
4
5
|
else {
System.out.println("Вы допустили ошибку при вводе числа. Попробуйте еще раз.");
scanner.next(); //рекурсия
num = getInt();
}
|
Biz char getOperation() usuli yordamida operatsiyani (+,-,*,/) tanladik
1
2
3
4
5
6
7
8
9
10
11
12
|
public static char getOperation(){
System.out.println("Введите операцию:");
char operation;
if(scanner.hasNext()){
operation = scanner.next().charAt(0);
} else {
System.out.println("Вы допустили ошибку при вводе операции. Попробуйте еще раз.");
scanner.next();//рекурсия
operation = getOperation();
}
return operation;
}
|
Ko'rib turganingizdek, foydalanuvchidan operatsiyani kiritish so'raladi. Va keyin dastur foydalanuvchi tomonidan kiritilgan qiymat char turiga tegishli yoki yo'qligini aniqlashi kerak. Bundan tashqari, agar foydalanuvchi quyidagilarni kiritsa, biz qoniqamiz: +, -, * yoki /. Misol uchun, agar foydalanuvchi raqam kiritsa, biz qoniqmaymiz. To'g'rimi? Shuning uchun biz ushbu 2 qator kodda ozgina "hiyla" ishlatdik:
1
2
|
if(scanner.hasNext()){
operation = scanner.next().charAt(0);
|
Biz skanerning next() usuli yordamida butun qatorni hisobladik. Bundan tashqari, bizga butun satr kerak emas, faqat satrning birinchi elementi, ya'ni nol elementi kerak bo'lgani uchun biz charAt(0) usulini ham chaqirdik. Shunday qilib, biz butun qatorni emas, balki faqat 0-elementning qiymatini olamiz.
Agar siz to'satdan skaner usullari qanday ishlashini unutgan bo'lsangiz, ushbu maqolani qayta o'qing - "Java'da skaner bilan ishlash". Shuningdek, agar siz charAt() usuli qanday ishlashini eslab qolishingiz kerak bo'lsa, ushbu maqolani qayta o'qing - Java'da "charAt()"
Va keyin biz int calc (int num1, int num2, int operatsiya) usulini yozdik:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
public static int calc(int num1, int num2, char operation){
int result;
switch (operation){
case '+':
result = num1+num2;
break;
case '-':
result = num1-num2;
break;
case '*':
result = num1*num2;
break;
case '/':
result = num1/num2;
break;
default:
System.out.println("Операция не распознана. Повторите ввод.");
result = calc(num1, num2, getOperation());//рекурсия
}
return result;
}
|
Ko'rib turganingizdek, biz kommutator konstruktsiyasidan foydalandik. Va ular shunday deb yozdilar:
agar foydalanuvchi + ni kiritgan bo'lsa, u holda num1+num2, ya'ni foydalanuvchi kiritgan 2 ta raqamni yig'amiz.
agar foydalanuvchi - kiritgan bo'lsa, u holda 1-raqam2, ya'ni foydalanuvchi kiritgan 1-raqamdan 2-raqamni ayiramiz.
va hokazo.
Agar siz to'satdan switch-case konstruktsiyasi qanday ishlashini eslashingiz kerak bo'lsa, ushbu maqolani qayta o'qing - "Java'da shartli if operatori. Switch operatori"
Shuni ham yodda tutingki, biz bu erda ham rekursiyadan foydalanganmiz. Bu kod satrlarida:
1
2
3
|
default:
System.out.println("Операция не распознана. Повторите ввод.");
result = calc(num1, num2, getOperation());//рекурсия
|
Va barcha kerakli usullarni yozganimizdan so'ng, biz main() usulida quyidagilarni yozdik:
1
2
3
4
5
6
7
|
public static void main(String[] args) {
int num1 = getInt();
int num2 = getInt();
char operation = getOperation();
int result = calc(num1,num2,operation);
System.out.println("Результат операции: "+result);
}
|
Ya'ni, num1 va num2 o'zgaruvchilari mos ravishda foydalanuvchi tomonidan kiritilgan 1 va 2-raqamlar bilan belgilanadi.
Operatsiya o'zgaruvchisiga foydalanuvchi kiritgan operatsiya tayinlanadi: +, -, * yoki /
Keyinchalik, "bizning kalkulyatorimiz" hisob-kitoblari natijasi natija o'zgaruvchisiga tayinlanadi.
Va shundan so'ng natija konsolga chiqariladi
Umid qilamizki, bizning maqolamiz siz uchun foydali bo'ldi. Bizning Java kurslariga yozilish mumkin. Batafsil ma'lumot uchun bizning veb-saytimizga qarang .
Bu, albatta, mening aybim, chunki, masalan: -34, ro'yxatning bir katagida emas, ikkitasida yotadi: birida, - ikkinchisida, 34). Shu sababli, bilan hisob-kitoblarga 2 ta qo'shimcha mantiq yozishga to'g'ri keldi -, umuman olganda, buni kodda ko'rasiz.
MAVZU: VALUCE () VA VALUE OF() METODLARI
Перечисления автоматически включают два предопределенных метода: values () и valueOf ().
Их общая форма выглядит так:
public static тип_епит[] values () public static тип_епит valueOf(String строка)
Метод values () возвращает массив, содержащий список констант перечисления. Метод valueOf () возвращает константу перечисления, чье значение соответствует строке, переданной в аргументе строка. В обоих случаях тип_епит— это тип перечисления. Например, в случае с перечислением Apple, показанным выше, типом возврата Apple.valueOf("Winesapp") будет Winesapp.
В следующей программе демонстрируется применение методов values () и valueOf ().
// Использование встроенных методов перечислений.
// Перечисление сортов яблок.
enum Apple {
Jonathan, GoldenDel, RedDel, Winesap, Cortland
}
class EnumDemo2 {
public static void main(String args[]) {
Apple ap;
System.out.println("Константы Apple: ") ; // применение
values() Apple allapples[] = Apple .values () ;
for(Apple a : allapples)
System.out.println(a);
System.out.println(); // применение
valueOf () ap = Apple.valueOf("Winesap");
System.out.println("ар содержит " + ap) ;
}
}
Вывод этой программы:
Константы Apple:
Jonathan
GoldenDel
RedDel
Winesap
Cortland
ар содержит Winesap
Обратите внимание, что программа использует стиль "for-each" цикла for для прохода по массиву констант, возвращенных values (). В целях демонстрации создается переменная allapples и ей присваивается ссылка на массив перечислимых значений. Однако этот шаг не является необходимым, поскольку for можно написать, как показано ниже, избежав необходимости в переменной allapples:
for(Apple а : Apple.values () )
System.out.println(a);
Также обратите внимание, как значение, соответствующее имени Winesapp получается вызовом метода valueOf ():
ар = Apple.valueOf("Winesap");
Как объяснялось ранее, valueOf () возвращает перечислимое значение, ассоциированное с именем константы, переданным в строке.
|
| |