середу, 13 березня 2013 р.

Java. Прості задачі на логіку і не тільки.

1. Дано 3 int значення a b c, повернути їхню суму. Якщо якесь з значень знаходиться в межах 13...19 окрім 15 та 16 - значить його рахувати рівним нулю.
Напишіть окремий хелпер "public int fixTeen(int n) {" , що приймає int значення та повертає відповідь згідно правилу. Внаслідок цього зникає необхідність дублювати код 3 рази ("декомпозиція").

Приклад виведення:
noTeenSum(1, 2, 3) → 6
noTeenSum(2, 13, 1) → 3
noTeenSum(2, 1, 14) → 3


Розв"язок:
public int fixTeen(int n) {

 if (n < 13 || n > 19 || n == 15 || n == 16) 
return n; 
return 0; }
public int noTeenSum(int a, int b, int c) { 
return (fixTeen(a) + fixTeen(b) + fixTeen(c)); 

2.  Дано рядок. Повернути суму значень 0-9, що наявні в рядку, не враховуючи всі інші значення. Повернути "0", якщо цифр в рядку нема взагалі.

Приклад виведення:
sumDigits("aa1bc2d3") → 6
sumDigits("aa11b33") → 8
sumDigits("Chocolate") → 0

Розв"язок:
public int sumDigits(String str) {
int sum = 0;
int lim = str.length();
char ch;
for (int i = 0; i < lim; i++) {
ch = str.charAt(i);
if (Character.isDigit(ch)) // or simply (ch >= '0' && ch <= '9')
sum += (ch - '0');
}
return sum;
}


Немає коментарів:

Дописати коментар