Академический Документы
Профессиональный Документы
Культура Документы
1. Логическо описание на String - Крайна (евентуално празна) редица от символи заградени от кавички
се нарича символен низ, знаков низ или само низ. Броят на символите в редицата се нарича дължина
на низ . Низ с дължина 0 се нарича празен низ.
Пример: “abc” - символен низ с дължина 3 ,
“This is a string” е символен низ с дължина 17,
а “” е празен низ.
! За да прочетем низ от конзолата, използваме отново класа Scanner и метода nextLine(), който ще ни
прочете един цял ред и ще ни го върне като резултат.
System.out.println(“Въведете текст”);
Scanner sc=new Scanner(Sytem.in);
String LineofText=sc.nextLine();
System.out.println(“Вие въведохте : ” +LineofText);
Резулататът от този код е :
Въведете текст
Здравей, как е?
Вие въведохте : Здравей, как е?
Когато въвеждаме символен низ, по този начин, след всяко натискане на клавиша Enter, методът
nextLine() ще ни прочита по един ред и ще ни го връща като резултат.
В горния пример прочитаме само един ред и го записваме в променливата LineofText.
! Друг начин да въведем символен низ от конзолата, е чрез метода next() на скенера. Така можем да
четем даден низ от конзолата до срещане на интервал. Това може да ни е от полза, когато на един
ред имаме текст заедно с друг тип данни (примерно числа) и бихме искали да запазим и двата типа като
отделни променливи. Трябва да внимаваме само ако в низа има интервали, защото частта от низа след
първия интервал няма да бъде прочетена от next() . Пример за използване на метода next():
2
if (text.charAt(i)==' ') {wordcount++;}
//System.out.println("Броят на думите е " +wordcount);
}
System.out.println("Броят на думите е " +wordcount);
}
}
За да постигнем същото по–често използваме операторът „+“ , който прави абсолютно същото и
резултатъ отново е String, който съдържа двата низа:
String first=”Just ”;
String sec=”do it.”;
System.out.print(first+sec);
г) сравняване на низове
Ако имаме следният пример
String a="Text";
String b="Text";
System.out.println(a==b); // извежда true
Може лесно да допуснем, че низовете може да се сравняват с оператора „==“. Но това не винаги е вярно
и затова използваме друг по – правилен начин за сравнение.
г) сравнение на низове с метода equals(). Той проверява дали стойността на два символни низа
съвпада.
String a="Text";
String b="Texa";
System.out.println(a.equals(b));//резултатът ще бъде true
г) сравнение на низове с метода equalsIgnoreCase();
Можем да сравним два низа, без значение дали в тях се съдържат големи или малки букви.
String a=new String("Text");
String b= new String("tExT");
System.out.println(a.equalsIgnoreCase(b));//резултатът ще бъде true
независимо от разликата в големи и малки букви.
г) сравнение на низове с метода compareTo();
Методът compareTo(), сравнява два низа като ни връща кой от тях е по–големият. За да разберем дали
един текст е „по–голям“ от друг, трябва да сравним лексикографски. Методът сравнява всеки символ
от първият текст със съответният символ на същата позиция от вторият текст. Ако символите са
различни, методът връща разликата в поредните им номера в таблицата с char литерали. Методът
връща число от тип int, като са изпълнени следните условия:
Ако низът, върху който извикваме метода, е по–малкият, то резултатът е число, по–малко от
нула.
Ако двата низа са еднакви, то резултатът е точно нула.
Ако низът върху който извикваме метода, е п –големият, то резултатът е число по–голямо от
нула.
Примери:
String string1=”Петър плет плете.”;
3
String string2=”Какво е Java?”; //
String string3=”Да програмираш или да мързелуваш, това е въпросът.”;
//положителен резултат , защото първият стринг е лексикографски по – голям от втория. Резултатът ще
е id-то на char “П” и char “К”
int result1=string1.compareTo(string2);
System.out.println(result1);
//негативен резултат защото третия стринг лексикографски е по–малък от втория
int result2=string3.compareTo(string2);
System.out.println(result2);
// ще изведе 0 защото сравнява първият стринг съвпада с първия
int result3=string1.compareTo(string1);
System.out.println(result3);
Резултат:
примерен текст с малки и големи букви
ПРИМЕРЕН ТЕКСТ С МАЛКИ И ГОЛЕМИ БУКВИ
е) replace() – върху даден низ да заменим всички срещания на даден подниз с друг.
String txt=”C++ е страхотен език за програмиране и на C++ се пише по-лесно.”;
String correctedtxt=txt.replace(“C++”,”Java”);
System.out.println(“Коригираният текст е: ” +correctedtxt);
System.out.println(“Оригиналният текст е: ” +txt);
е) substring() - Използваме метода substring(), за да извлечем някаква част (подниз) от даден низ.
Методът приема един аргумент – началният индекс, от който да започне вземането на подниза. От там
до края на низа се извлича подниз, който ни се връща като резултат. Имаме и втор вариант на метода,,
който приема и крайната позиция. Важното тук да отбележим, че извлеченият подниз съдържа знаците
на позиции от началото до края -1.
Пример:
String text=”Днес е хубав ден за работа с низове”;
System.out.println(text.substring(5)); // извежда от 6тия знак до края (от този индекс 5)
Резултат:
е хубав ден за работа с низове
е) trim() – използваме метода trim() за да премахнем интервалите в началото и края на даден низ.
Празните пространства, оградени от други знаци, няма да бъдат премахнати. Методът не приема
аргументи . Важно е отново да отбележим, че методът модифициара оригиналният низ , а връща като
резултат нов. Ето пример за това:
String originaltext=” Текст с празни пространства в началото и края. ”;
// премахваме интервалите в краищата и записваме резултата в нова променлива
String trimmedtext=originaltext.trim();
System.out.println(trimmedtext);
е) indexOf() – използваме методът indexOf() за да намерим първата позиция, на която даден низ се
среща в друг. Методът може да приеме параметър от тип String или параметър от тип char, съответстващ
на това което ще търсим. Имаме и друга форма на метода, която приема началната позиция, от която да
започнем търсенето. Можем да използваме този метод, за да разберем дали в текста се съдържа някаква
дума, знак или цял друг текст. Ако избраният знак не се съдържа в текста, методът връща стойност -1.
Следните примери:
String text="Програмирането е изкустовo на мисълта";
System.out.println(text);
//намираме къде в думата се намира думата изкуство. Резултатъt е от
тип цяло число.
int artposition=text.indexOf("изкуство"); //17
System.out.println("Думата 'изкуствo' се среща на" +artposition);
//намира позицията на знакът „е“ в текста
int isposition=text.indexOf("e"); //11
System.out.println("Буквата 'е' се среща на позиция:" +isposition);
//намира позицията на знакът „o“ в текста
int oposition=text.indexOf("o");//-1
if (oposition==-1) {
System.out.println("Буквата 'o' не се среща в текста") ;
}
else{
System.out.println("Буквата 'o' се среща на позиция" +oposition);
}
Demo:
package klas9a_b;
import java.util.Scanner;
public class String_zad {
5
public static void main(String[] args) {
// TODO Auto-generated method stub
String str;//sazdava niz
Scanner inp=new Scanner (System.in);
str=inp.nextLine();//prochita
System.out.println(str);//izvejda
int d=str.length();
System.out.println(d);//izvejda daljinata
int wordcount=1;
//за всички символи
for(int i=0;i<str.length();i++){
//в случай че открием интервал, то това ще е началото за нова дума
if (str.charAt(i)==' ') {wordcount++;}
//System.out.println("Броят на думите е " +wordcount);
}
System.out.println("Броят на думите е " +wordcount);
//слепване на низове
String str1=" Privet";
System.out.println(str.concat(str1));
String str2=str.concat(str1);
System.out.println(str2);
//sravnavane
boolean ravnili=(str==str1);//ще е Т ако са ражни и F ако не са
System.out.println(str.equals(str1));//ще е Т ако са ражни и F ако не
са
//резултатът ще бъде true независимо от разликата в големи и малки
букви.
System.out.println(str.equalsIgnoreCase(str1));
//sravnava leksikografski, - parvi po-malyk, 0 ravni, _ parvi po-golam
int result1=str.compareTo(str1);
System.out.println(result1);
Задача 1: Програма, която намира колко пъти въведен от клавиатурата символ се среща в символен низ.
Scanner sc=new Scanner(System.in);
String text=sc.nextLine();
char bukva= sc.next().charAt(0);
int br=0;
for(int i=0;i<text.length();i++){
if (text.charAt(i)==bukva){ br++;}
}
6
System.out.print("Броят на символите e =" +br);
}
}
Реултат:
Just do it.
t
Броят на символите e =2