Программирование на Java
Задачник к онлайн курсу и учебнику
Блок 1. Раздел 2. Оператор IF, строки
Задачник для самостоятельной практики
На онлайн занятиях решаем задачи, разбираем трудные места
Преподают опытные программисты, с нуля до мобильных приложений

Программирование на Java

Задачник
к онлайн курсу и учебнику
Блок 1. Раздел 2. Оператор IF, строки

Задачник для самостоятельной практики
На онлайн занятиях решаем задачи, разбираем трудные места
Преподают опытные программисты, с нуля до мобильных приложений
На этой странице приведены задачи к разделу 2. В скобках указано, для какой темы та или иная задача. Для части задач дано решение, разобранное в учебнике, для других решения нет - его должны найти вы.
Задача 1.2.1 (есть в учебнике, тема 1). Как будет работать и что будет выдавать данная программа на экране?
package javaapplication5;
import java.util.Scanner;
public class JavaApplication5 {
    public static void main(String[] args) {
        Scanner myscan = new Scanner (System.in);
        
        System.out.println ("Привет!");
        System.out.println ("Введи первое число");

         double x = 0;
         x = myscan.nextDouble (); 

         System.out.println ("Введи второе число");
         double y = 0;
         y = myscan.nextDouble ();

         System.out.println (x + y);
    }             
}
Вывод программы
Программа будет выдавать сумму двух дробных чисел, введенных пользователем. По сути, это прототип будущего калькулятора, который мы напишем в конце этого раздела.
Задача 1.2.2 (тема 3). Напишите тестеровщик на основе данного кода. Пусть он спрашивает не один вопрос как сейчас, а 3 вопроса.
package javaapplication5; //название проекта у вас будет какое-то свое
import java.util.Scanner;
public class JavaApplication5 { //здесь тоже свое 
    public static void main(String[] args) {
        Scanner myscan = new Scanner (System.in);
        
        System.out.println ("Привет!");
        System.out.println ("Сколько будет 25*5 ?");

         int x = 0;
         x = myscan.nextInt (); //считать int с клавиатуры и записать в x
        
        if (x == 125){
               System.out.println ("Да, это круто!");
        } else {
		System.out.println ("Абсолютная ложь!");
		}
	}
}
Вывод программы
Привет!
Сколько будет 25*5 ?
100
Абсолютная ложь!
Сколько будет 5*5 ?
25
Да, это круто!
Сколько будет 9*5 ?
45
Да, это круто!
Задача 1.2.3. (есть в учебнике, тема 2). Что выведет программа, если человек наберет на клавиатуре abc?
package javaapplication1;
public class JavaApplication1 {
public static void main(String[] args) throws java.io.IOException  {
  char c0 = (char) System.in.read ();
  char c1 = (char) System.in.read ();
  char c2 = (char) System.in.read ();

  System.out.println (c2);
  System.out.println (c1);
  System.out.println (c0);
 }   
}
Вывод программы
cba
Код
Программа вводит три символа, сохраняя их в переменные c0, c1, c2. Затем программа выводит их в обратном порядке c2, c1, c0. Так что любые три введенные с клавиатуры символа, будут распечатаны в обратном порядке.
Задача 1.2.4. (есть в учебнике, тема 4) Напишите лотерею. Человек не знает, какие несколько конкретных чисел выигрышные, и пробует ввести их наугад от 0 до 100. Мы сообщаем о выигрыше, если введенное число равно 4, 10, 40 или 89. Напишите этот код с помощью пары операторов switch-case.
Вывод программы
Поучаствуйте в лотерее!
Введите целое число от 0 до 100
4
Да, ДЖЭКПОТ, 1000000 долларов!..
49
Попробуйте ещё в следующий раз!
Код
package javaapplicationB;
import java.util.Scanner;
public class JavaApplicationB {
public static void main(String[] args) {
// сначала вариант через if-else
System.out.println ("Поучаствуйте в лотерее!");
System.out.println ("Введите целое число от 0 до 100");
int x = 0;
Scanner myscan = new Scanner (System.in);
x = myscan.nextInt ();

if (x < 0 || x > 100) {
System.out.println ("Вы ввели число вне заданных границ!");
} else if (x == 4) {
System.out.println ("Да, ДЖЭКПОТ, 1000000 долларов!.. ");
} else if (x == 10) {
System.out.println ("Вам повезло! 100 рублей ваши!");
} else if (x == 40) {
System.out.println ("В этот раз мы дадим вам 10 рублей!");
} else if (x == 89) {
System.out.println ("Ваш приз 1000 рублей!.. ");
} else {
System.out.println ("Попробуйте ещё в другой раз..");
}

// вариант через switch

x = myscan.nextInt ();
switch (x) {
case 4:
System.out.println ("Вы ВЫИГРАЛИ ГЛАВНЫЙ ПРИЗ!");
System.out.println ("Это миллион долларов!");
break;
case 10:
System.out.println ("Вы выиграли 100 рублей!..");
break;
case 40:
System.out.println ("Вы выиграли 10 рублей!..");
break;
case 89:
System.out.println ("Вы выиграли 1000 рублей!..");
break;
default:
System.out.println ("Попробуйте ещё в следующий раз!");
break;
}
Задача 1.2.5. (есть в учебнике, тема 3) Может ли при каком либо x сработать else if (x>1000) в данном коде:
package javaapplication1;
import java.util.Scanner;
public class JavaApplication1 {
public static void main(String[] args) {

        Scanner myscan = new Scanner (System.in);
        
        int x = myscan.nextInt ();
        
        if (x>100)
            System.out.println ("x > 100");
        else if (x > 1000)
            System.out.println ("x > 1000");
        else
            System.out.println ("x <= 100");
 }   
}
Вывод программы
Нет, секция else if (x>1000) не сработает никогда ни одного раза ни при каких значениях x.
Пояснение
Компилятор выполняет оператор if последовательно сверху вниз и выполнит только одну из секций во всём операторе. В начале написан if (x>100) - всё что ниже выполнится только если x <= 100. Но ниже написан else if (x > 1000) - когда компилятор дойдет сюда, x уже всегда будет меньше либо равен сотни, тем более он никогда не окажется больше тысячи.
Задача 1.2.6 (есть в учебнике, тема 4). Напишите калькулятор. Используйте Scanner и if.

а) Пусть человек вводит одно число, вводит второе и затем вводит символ '+', '-', '*' или '/'. В зависимости от символа выведите на экран результат выполнения арифметической операции.

б) С получившимся ответом предложите выполнить ещё одну операцию и уже нужно будет ввести символ операции и одно число и применить операцию к результату выполнения прошлой операции. Так сделайте 4 раза.

в) Добавьте возможность - если человек на любом этапе введёт символ 'q', то завершите программу на этом месте. Это опциональная, дополнительная задача. Вам поможет слово return - его можно написать внутри любого if и вообще в любом месте, и тогда текущая функция, то есть main, сразу завершится.

г) Дополнительная задача - Прочитайте в интернете, как работает функция hasNextInt класса Scanner, и с её помощью сделайте так, чтобы программа не падала, даже если пользователь вводит не число, а какое-то слово. Умение находить информацию в интернете – такое же важное, как и умение писать код. Читайте форумы, книги, документацию, help и так далее.
Вывод программы
1
2
+
Сумма равна: 3.0
6
+
Сумма равна: 9.0
5
-
Сумма равна: 4.0
2
*
Сумма равна: 8.0
4
/
Сумма равна: 2.0
Задача 1.2.7 (тема 3). Считайте целое число с клавиатуры и сохраните его в переменную x. Выполните распечатку, в случае если

а) x равен 6 или 9

б) x больше -20 и одновременно меньше 100

в) x меньше 100 или больше 1000

Вывод программы
При вводе
а) 6, 9
б) больше -20 и одновременно меньше 100
в) меньше 100 или больше 1000
печатается то, что было введено. В противном случае не печатается ничего
Задача 1.2.8 (тема 5). Введите с клавиатуры строчку.
а) Если в ней есть буква 'a', то напечатайте "в этом тексте была буква a".

б) Если в строке содержится слово "арбуз", то напечатайте "в этом тексте было слово арбуз".

Введите ещё одну строчку с клавиатуры.

в) Если последние и начальные буквы двух этих двух строчек совпадают, то напечатайте, что программа это обнаружила.

г) Выведите на экран сначала одну из введенных строк, потом другую в порядке, в котором эти строки шли бы в словаре. Поможет одна из функций класса String.

д) Выведите ту строчку, в которой больше символов.

е) Выведите первую строчку без начального символа.

Задача 1.2.9 (тема 5). Напишите программу - прообраз текстового редактора с подсчетом статистики. Пусть пользователь может вводить несколько строчек текста, к примеру пять штук. Программа должна вывести, сколько в тексте было всего символов во всех 5 строчках. Если пользователь на каком-либо этапе ввёл "quit", то программа должна завершиться на этом этапе. Вам поможет слово return - его можно написать внутри любого if и вообще в любом месте, и тогда текущая функция, то есть main, сразу завершится.
Вывод программы
При вводе
раз
два
три
четыре
пять
Будет вывод:
Всего введено букв: 20
Задача 1.2.10 (тема 1). Считайте с клавиатуры три дробных числа. Выведите их на экран в обратном порядке, при этом сделав их целыми, то есть отбросив дробную часть.

Вывод программы
При вводе
1.2
7.89
0.1
Будет вывод
0
7
1
Задача 1.2.11 (тема 5). Считайте с клавиатуры строчку. Выведите её же, но все вхождения малой буквы 'a', замените на заглавную 'A'. Вам поможет функция replace класса String - узнайте как она действует самостоятельно.

Вывод программы
При вводе
cabinet
Будет вывод
cAbinet
Задача 1.2.12 (Тема 3). Сгенерируйте 3 случайных числа. Выведите самое большое из них.
Создайте мобильные приложения и изучите Java с преподавателем
Самый востребованный язык на рынке труда
Группы до 15 человек, преподают опытные программисты
Проверим каждую строчку вашего кода
Cертификат и портфолио - своя мобильная игра и магазин
Создайте мобильные приложения и изучите Java с преподавателем
Самый востребованный язык на рынке труда
Группы до 15 человек, преподают опытные программисты
Проверим каждую строчку вашего кода
Cертификат и портфолио - своя мобильная игра и магазин