Skip to main content

51. Арифметика

Теория

Для создания переменной строки необходимо использовать кострукцию вида:

    String название_переменной;

Пока мы не зададим начальное значение строковой переменной s idea будет выдавать ошибку:

trigger

Напишем простейшую программу

public class Main {
public static void main(String[] args) {
String s = "Привет, мир!";
System.out.println(s);
}
}

Она создаёт переменную строки, помещает в неё строку Привет, мир!, после чего выводит на экран значение используемой переменной:

trigger

Чтение с консоли

Чтобы считать с клавиатуры строку, необходимо использовать команду sc.nextLine():

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
// создаём сканер
Scanner sc = new Scanner(System.in);
// читаем строку с клавиатуры
String s = sc.nextLine();
// выводим её на экран
System.out.println(s);
}
}

trigger

Если нам нужно прочитать строку только до первого пробела, тогда необходимо использовать команду next():

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
// создаём сканер
Scanner sc = new Scanner(System.in);
// читаем первое слово с клавиатуры
String s = sc.next();
// выводим его на экран
System.out.println(s);
// читаем второе слово с клавиатуры
s = sc.next();
// выводим его на экран
System.out.println(s);
}
}

Получим:

trigger

Сложение строк

Чтобы сложить две строки, необходимо просто прибавить одну к другой:

public class Main {
public static void main(String[] args) {
String s = "Привет,";
String s2 = "Мир";

String res = s + " " + s2;
System.out.println(res);
}
}

Получим:

Привет, мир!

Массив символов

Строку можно рассматривать как массив типа char. Правда, при этом строки нельзя изменять. Поэтому чтобы заменить третий символ в строке, нужно использовать метод .substring(int a, int b).

Он возвращает подстроку, состоящую из символов от a включительно до b исключительно

public class Main {
public static void main(String[] args) {
String s = "Привет, Мир";
String res = s.substring(0, 4);
System.out.println(res);
res = s.substring(2, 5);
System.out.println(res);
}
}

Получим:

Прив
иве

Чтобы заменить, например, третий символ в строке, необходимо использовать такую конструкцию:

public class Main {
public static void main(String[] args) {
String s = "Привет, Мир";
String res = s.substring(0, 3) + "!" + s.substring(4, s.length());
System.out.println(res);
}
}

Получим:

При!ет, Мир

Команда s.length() возвращает длину строки

Получить символ гораздо проще. Для этого используется команда .charAt():

public class Main {
public static void main(String[] args) {
String s = "Привет, Мир";

char c = s.charAt(3);
System.out.println(c);
}
}

Получим:

в

Символы

Все символы хранятся в переменных типа char. Чтобы задать переменной значение, необходимо использовать одинарные кавычки, а чтобы строку - двойные.

    String s = "Привет, Мир";
char c = '!';

Символьный тип данных - это надстройка над целым типом данных, поэтому с ним можно выполнять все те же операции, что и с целыми числами.

Задача

С клавиатуры вводится символ, необходимо узнать, является ли он заглавной буквой

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// читаем строку
String s = sc.nextLine();
// получаем из неё символ с индексом 0 (первый)
char c = s.charAt(0);
// если c - заглавная буква
if ('A' <= c && c <= 'Z')
System.out.println("ДА");
else
System.out.println("НЕТ");
}
}

Если необходимо выполнить арифметические операции над переменными типа char, то после их выполнения необходимо явно привести результат выражения к типу char. По умолчанию все участники арифметических выражений преобразуются в int.

Задача

С клавиатуры вводится строчная буква латинского алфавита, необходимо вывести её заглавный вариант.

Каждый символ имеет свой код. Именно с ним работает java. Сами символы в человеконятном виде выводятся только для удобства разработки.

Коды всех символов представлены в таблице ascii

trigger

Можно заметить, что и большие, и маленькие буквы идут подряд, поэтому мы можем из кода текущего символа вычесть код строчной буквы a. Тогда мы получим, на сколько код прочитанного символа больше кода буквы a.

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

Если не использовать явное преобразование, то среда разработки выдаст ошибку:

trigger

Добавим явное преобразование и выведем ответ на экран:

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// читаем строку
String s = sc.nextLine();
// получаем из неё символ с индексом 0 (первый)
char c = s.charAt(0);

char cb = (char)(c - 'a' + 'A');
System.out.println(cb);
}
}

Получим:

trigger

Задание

Классом Integer пользоваться нельзя.

  1. Введите с клавиатуры цифру, знак + и еще одну цифру. Выведите на экран результат введенной операции.
  2. Введите с клавиатуры цифру, знак - и еще одну цифру. Выведите на экран результат введенной операции.
  3. Введите с клавиатуры три символа. Выведите на экран, верно ли, что эти три символа составляют верное равенство цифр (YES/NO).
  4. Ввести с клавиатуры четыре символа: две цифры, знак плюс, цифра. Известно, что первая цифра не 99. Вывести на экран результат сложения.
  5. Введите с клавиатуры целое двузначное число (от 1010 до 9999), знак / и еще одну цифру (не ноль) без пробелов. Выведите на экран результат введенной операции с точностью 3 цифры после десятичной точки.
  6. Ввести с клавиатуры шесть символов: три цифры, знак минус, две цифры. При этом первая цифра - не ноль. Вывести на экран результат вычитания.
  7. Дана строка, изображающая арифметическое выражение вида <цифра>±<цифра>±...±<цифра><цифра>\pm<цифра>\pm...\pm<цифра>, где на месте знака операции ±\pm находится символ + или (например, 4+7284+7–2–8). Вывести значение данного выражения (целое число).