import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static java.lang.Math.*;
public class HelloWorld {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
System.out.print("Email:");
String parol=in.next();
Pattern pattern = Pattern.compile("\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*\\.\\w{2,4}");
Matcher matcher = pattern.matcher(parol);
boolean matches = matcher.matches();
if (!matches)
System.out.print("Неверный email");
else
System.out.print("Верный email");
}
}
ДЗ. Составить и отработать на компьютере
1. Написать регулярное выражение, определяющее является ли данная строчка датой в формате dd.mm.yyyy. Начиная с 2000 года до 2099 года.
–пример правильных выражений: 29.02.2000, 30.04.2003, 01.01.2003.
–пример неправильных выражений: 29/02/2001, 30-04-2003, 1/1/1899.
Pattern . compile ("(0[1-9]|[12][0-9]|3[01])\\.(0[1-9]|1[012])\\.((20)\\ d \\ d )");
( # Начало группы 1
0[1-9] # 01-09 или 1-9
| # Или
[12][0-9] # 10-19 или 20-29
| # Или
3[01] # 30 или 31
) # Конец группы 1
\\. # Дальше должна быть точка "."
( # Начало группы 2
0[1-9] # 01-09 или 1-9
| # Или
1[012] # 10,11 или 12
) # Конец группы 2
\\. # Дальше должна быть точка "."
( # Начало группы 2
(20)\\d\\d # Число от 2000 до 2099
) # Конец группы 3
\d | Любая цифра (иначе, [0-9] ) |
Контрольная работа по теме «Строки»
1 Что будет выведено на экран, в результате работы следующей программы:
String input = "Hello Java! Hello JavaScript! JavaSE 8.";
Pattern pattern = Pattern.compile("Java(\\w*)");
Matcher matcher = pattern.matcher(input);
while(matcher.find())
System.out.println(matcher.group());
1 Что будет выведено на экран, в результате работы следующей программы:
String input = "Hello Java! Hello JavaScript! JavaSE 8.";
Pattern pattern = Pattern.compile("Java\\w");
Matcher matcher = pattern.matcher(input);
while(matcher.find())
System.out.println(matcher.group());
2 Задана строка. Найти произведение всех цифр, которые в неё входят.
Pattern pattern =Pattern.compile( "[0-9]" );
Matcher matcher = pattern .matcher( " Мама купила 5 кг лука , 6 кг картошки , 3 кг слив " );
int p =1;
while ( matcher .find()) {
p *=Integer.parseInt( matcher .group());
}
System. out .println( p );
2 Задана строка, содержащая математическую запись вида: 3+5=8. Сформировать из неё две строки. Первая должна содержать только знаки операций и отношения, вторая – цифры.
Pattern pattern =Pattern.compile( "[0-9]" );
Matcher matcher = pattern .matcher( "8+5=3" );
String numbers = new String(), operations = new String();
while ( matcher .find()) {
numbers += matcher .group();
}
System. out .println( numbers );
pattern =Pattern.compile( "\\+|\\-|\\=|\\*|\\/" );
matcher = pattern .matcher( "8+5=3" );
while ( matcher .find()) {
operations += matcher .group();
}
System. out .println( operations );
3 Дано предложение. Подсчитать, сколько раз в нём встречается буква «е».
3 Дано предложение. Определить число вхождений в него некоторого буквосочетания из двух букв.
String text = "Слова чаща, пища пишутся с буквой а, как и слово щавель" ;
int count =0;
int pos = text .indexOf( " ща " );
while ( pos !=-1) {
count ++;
pos = text .indexOf( " ща " , pos +2);
}
System . out . println ( count );
Контрольная работа по строкам (2 попытка)
1 вариант
1. Дано предложение. Определить количество букв «н», предшествующих запятым.
Scanner in = new Scanner (System. in );
System. out .print( " Введите строку :" );
String text = in .nextLine();
char [] a = text .toCharArray();
int count =0;
for ( int i =0; i < a . length ; i ++)
if ( a [ i ]== ',' && a [ i -1]== ' н ' )
count ++;
System. out .print( count );
2. Задана строка. Создать на её основе вторую строку, где сначала будут располагаться буквы латинского алфавита, потом – цифры, а после них – знаки препинания.
3. Написать программу, которая заменяет в тексте все последние буквы всех слов на заглавные.
Scanner in = new Scanner (System. in );
System. out .print( " Введите строку :" );
String text = in .nextLine();
char [] a = text .toCharArray();
int n = a . length -1;
a [ n ] = Character.toUpperCase( a [ n ]);
for ( int i =0; i < a . length ; i ++)
if (( a [ i ]== ' ' || a [ i ]== ',' || a [ i ]== '.' ) && a [ i -1]!= ' ' )
a [ i -1]=Character.toUpperCase( a [ i -1]);
A .toString();
System. out .print( a );
2 вариант
1. Дано слово. Поменять местами его первую и последнюю буквы
String str1 = " мама " ;
char [] str = str1 .toCharArray();
char temp = str [0];
str [0]= str [ str1 .length()-1];
str [ str1 .length()-1]= str [0];
String str3 = new String( str );
System. out .println( str3 );
2. Задана строка. Сформировать из её три строки. Первая должна содержать только знаки операций отношения, вторая – скобки, третья – цифры.
3. Даны две строки, содержащие значения двух годов "2017" и "2018". Создать третью строку, содержащую в качестве значения сумму этих годов "4035"
String str1 = "2017" ;
String str2 = "2018" ;
int st =Integer.parseInt( str1 )+Integer.parseInt( str2 );
String str3 =Integer.toString( st );
System. out .println( str3 );
4.
Методы в Java
Если переменные и константы хранят некоторые значения, то методы содержат собой набор операторов, которые выполняют определенные действия.
Общее определение методов выглядит следующим образом:
[модификаторы] тип_возвращаемого_значения название_метода ([параметры]){
// тело метода
}
Модификаторы и параметры необязательны.
По умолчанию главный класс любой программы на Java содержит метод main, который служит точкой входа в программу:
public static void main(String[] args) {
System.out.println("привет мир!");
}
Ключевые слова public и static являются модификаторами. Далее идет тип возвращаемого значения. Ключевое слово void указывает на то, что метод ничего не возвращает.
Затем идут название метода - main и в скобках параметры метода - String[] args. И в фигурные скобки заключено тело метода - все действия, которые он выполняет.
Создадим еще пару процедур:
// определение первого метода
static void method1(){
System.out.println("Method1");
}
//определение третьего метода
void method2(){
System.out.println("Method2");
}
Условно методы, которые не возвращают никакого значения, называются процедурами.
Кроме void методы в Java могут возвращать конкретное значение. Такие методы, также условно называют функциями. Например:
int factorial(){
return 1;}
String hello(){
return "Hell to World";
}
В функции в качестве типа возвращаемого значения вместо void используется любой другой тип. В данном случае тип int и тип String. Функции также отличаются тем, что мы обязательно должны использовать оператор return, после которого ставится возвращаемое значение.
При этом возвращаемое значение всегда должно иметь тот же тип, что значится в определении функции. И если функция возвращает значение типа int, то после оператора return стоит целочисленное значение (как в данном случае число 1), которое неявно является объектом типа int.
Дата: 2018-11-18, просмотров: 561.