-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path21_StringClass_ver3
More file actions
103 lines (82 loc) · 4.04 KB
/
Copy path21_StringClass_ver3
File metadata and controls
103 lines (82 loc) · 4.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package lesson21;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
/* Разработать класс String, который в дальнейшем будет использоваться для работы со строками.
* Класс должен содержать:
конструктор по умолчанию, позволяющий создать строку длиной 80 символов;
конструктор, позволяющий создавать строку произвольного размера;
конструктор, который создаёт строку и инициализирует её строкой, полученной от пользователя.
Класс должен содержать методы для ввода строк с клавиатуры и вывода строк на экран.
*
*/
/* Добавить в строковый класс функцию, которая создает строку, содержащую пересечение двух строк,
* то есть общие символы для двух строк. Например, результатом пересечения строк "sdqcg" "rgfas34"
* будет строка "sg". Для реализации функции перегрузить оператор * (бинарное умножение).
*
*/
public class StringClass {
private static String string;
public static void main(String[] args) {
StringClass sClass1 = new StringClass();
new StringClass(41);
sClass1.write();
new StringClass(string);
sClass1.show(string);
System.out.println("Пересечение: " + sClass1.cross("554332111", "122333444455555"));
}
// конструктор со строкой 80 символов
public StringClass() {
String str = " ";
System.out.println("Конструктор-1. Длина строки = " + str.length());
}
// конструктор с произвольной строкой
public StringClass(int length) {
String str = "";
for (int i=0; i<length; i++){
str = str + " ";
}
System.out.println("Конструктор-2. Длина строки = " + str.length());
}
// конструктор со строкой, введённой с клавиатуры
public StringClass(String s){
String str = s;
System.out.println("Конструктор-3. Строка: \n" + str);
}
// ввод строки с клавиатуры
public void write() {
System.out.println("Ну давай уже, вводи свою строку: ");
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
string = reader.readLine();
} catch (Exception e) {
e.printStackTrace();
}
}
// вывод строки
public void show(String str) {
System.out.println("Введённая строка: " + str);
}
// пересечение двух строк
public String cross(String firstString, String secondString) {
String resultString = "";
// перевод первой строки в коллекцию символов
ArrayList <Character> firstArray = new ArrayList<>();
for (int i=0; i<firstString.length(); i++) {
firstArray.add(firstString.charAt(i));
}
// перевод второй строки в коллекцию символов
ArrayList <Character> secondArray = new ArrayList<>();
for (int i=0; i<secondString.length(); i++) {
secondArray.add(secondString.charAt(i));
}
// обработка пересечения
for (int i=0; i<secondArray.size(); i++) {
if (firstArray.contains(secondArray.get(i))) {
resultString += secondArray.get(i);
firstArray.set(firstArray.indexOf(secondArray.get(i)), null); //удаляем повторяющийся символ из строки1
secondArray.set(i, null); //удаляем повторяющийся символ из строки2
}
}
return resultString;
}
}