Ребята объясните работу Java кода

public class Homework { public void email(String email){ int a1 = 0; // позиция символа @ int a2 = 0; // позиция символа . int a3 = 0; // позиция символа ; int e = email.length(); for(int i = 0; i < e ;i++){ a1 = email.indexOf('@',a3); a2 = email.indexOf('.',a3); a3 = email.indexOf(';', a3+1); System.out.println(email.substring(a1 + 1, a2)); } } public static void main(String[] args) { Homework h1 = new Homework(); h1.email("ya@yahoo.com; on@mail.ru; ona@gmail.com;"); } }

Ребята всем привет, пожалуйста поясните мне работу этого кода шаг за шагом, я понимаю что он делает в целом, но как то шаг за шагом не понял, нужно чтоб он передаваемый параметр он выводил в таком виде ( yahoo mail gmail ) , заранее благодарен, не серчайте

66
58 комментариев

Комментарий недоступен

7
Ответить

Эта херня вообще не будет работать на реальных адресах, например: "name.surname@mail.yahoo.com".
1. Сперва надо split сделать по символу ';'. и разбить на список почт.
2. Удалить из списка пустые строки.
3. Потом каждую почту split'ом разбить по символу '@'.
4. Взять вторую часть почты и разбить по символу '.'.
5. Из последнего разбиения взять предпоследний элемент это и будет домен типа yahoo, gmail и тд.
...
PROFIT...

Еще факультативно почитать RFC 2142 по именам email какие там знаки допустимы и тд.

3
Ответить

1. Сперва надо split сделать по символу ';'. и разбить на список почт.Что с затратами по памяти? А что, если на вход будет подаваться не 1 строка, а файл?

Ответить

это из курса по джава , просто задача такая

Ответить

поясните мне работу этого кода шаг за шагомчел, ну запусти дебаггер

2
Ответить

Если чел просит объяснить каждую строчку, то следует ожидать следующий вопрос: а что такое дебагер?

Ответить

паблик класс хомеворка
паблик воид емаил (стринг емаил)

Дальше объяснять?

1
Ответить