Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
bigbadda
0 / 0 / 0
Регистрация: 03.03.2013
Сообщений: 28
#1

проверка вхождения

03.06.2013, 21:02. Просмотров 1445. Ответов 4
Метки нет (Все метки)

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package pract1;
 
import java.io.*;
 
public class Hello {
 
    public static void main(String[] args) throws IOException {
 
        InputStreamReader is = new InputStreamReader(System.in);
        BufferedReader bis = new BufferedReader(is);
 
        System.out.println("Введите своё имя");
 
        String name;
        name = bis.readLine();
        System.out.println("Привет " + name);
 
    }
 
}
А теперь я бы хотел сделать проверку. Если name = число, то System.out.println("error, введите символы а не числа.");
Если в имени < 3 букв - System.out.println("Имя не может состоять из 2 букв");

Я не понимаю как это сдеать. Начитался уже про регулярные выражения, про исключения Exception,
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2013, 21:02
Ответы с готовыми решениями:

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

Траектория вхождения в отрасль
Здравствуйте, друзья! Кризис среднего возраста, как и многих других, толкает...

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

Подсчет вхождения каждого символа в строке
Например, есть строка: aabbacddb И надо вывести: a - 3 b - 3 c - 1 d -...

Добавить после каждого entry-го вхождения
Добавить после каждого entry-го вхождения подстроки oldSubstr подстроку...

4
AckiyBolt
649 / 398 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
03.06.2013, 23:03 #2
регулярки
эксепшены
1
Фаер
640 / 369 / 259
Регистрация: 09.12.2011
Сообщений: 733
Записей в блоге: 35
03.06.2013, 23:19 #3
Java
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
import java.io.*;
 
class javaapplication48.JavaApplication48 { 
    public static void main(String[] args) throws IOException {
 
        InputStreamReader is = new InputStreamReader(System.in);
        BufferedReader bis = new BufferedReader(is);
 
        System.out.println("Введите своё имя");
 
        String name;
        name = bis.readLine();
        if (name.length()<3){
            System.out.println("Имя не может состоять из 2 букв");
        }
        else{
            System.out.println("Привет " + name);
        }
        for(int i=0;i<name.length();i++){           //проходим по символам строки
            if(name.charAt(i)>='0' && name.charAt(i)<='9'){      //проверяем, входит ли символ в промежуток ['0'..'9']
                System.out.println("Введите символы, а не числа");
                break;
            }
        }
    }
}
1
bigbadda
0 / 0 / 0
Регистрация: 03.03.2013
Сообщений: 28
04.06.2013, 01:19  [ТС] #4
тю. и никаких регулярок ненадо. Просто перебор.Я не знал параметра charAt Но всё же. я начал разбираться с регулярными выражениями, и пытался сравнить регулярное выражение с указанной строкой. Для этого я так понимаю мне нужна конструкция регулярного выражения \d - цифра от 0 до 9: [0-9], тоесть оно должно сравнивать указанную строку с цифрами от 0 до 9, и если там присутствуют такие числа - то написать мне Privet 23413 is bad name, a если же ввести символы, то Privet Vova is good name.

Java
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
package pract1;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
public class Hello {
 
    public static void main(String[] args)  {
 
        Scanner bis = new Scanner(System.in);
 
        System.out.println("Vvedite svoyu imya");
 
        String name;
        name = bis.nextLine();
        System.out.println("Privet " + name);
        System.out.println("" + name + " is " + (check(name)?"good":"bad") + " name" + "\n");
    }
    private static boolean check(String name) {
        Pattern p = Pattern.compile("[/d]");
        Matcher m = p.matcher(" name");
        boolean b = m.matches();
        return b;
    
    }
}
должно было получится что-то вроде этого. Но проверка по-чему то не работает..Всегда пишет bad name
я как-то не правильно написал строку
Java
1
Pattern p = Pattern.compile("[/d]");
?

Добавлено через 1 час 6 минут
нашел свою ошибку.
в 21 строке
Java
1
Matcher m = p.matcher(" name");
нужно забрать скобки
Java
1
Matcher m = p.matcher(name);
и в 20 строке
Java
1
Pattern p = Pattern.compile("[/d]");
нужно написать другое исключение
Java
1
Pattern p = Pattern.compile("(([a-zA-Z][\\w]*))");
спасибо за помощь.
0
Care
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
05.06.2013, 09:34 #5
Я пока очень мало знаю про регулярные вырожение ,но можно же было сделать проще?

Java
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
    Scanner scan = new Scanner(System.in);
        String temp = null;
        while(true){
            System.out.println("Введите что нибуть: ");
            temp = scan.nextLine().toLowerCase().trim();
            if(temp.length() < 2 || intChecker(temp)){
                System.out.println("Что то не правильно!");
                continue;   //Выполниться при условии и пропустить брейк пока условие выполняеться
            }
            
            
            
            
            break; //ВЫполниться полюбому
        }
    }
    
    public static boolean intChecker(String s){
        try{
            Integer.parseInt(s);  //Если генерируеться исключение то выводиться false иначе true!
        }catch(Exception ex){
            return false;
        }
        return true;
    }
Добавлено через 8 минут
Цикл и тд можно убрать и оставить только ветвление и метод intChecker

Добавлено через 26 минут
или же можно было сделать ещё проше ... сделать что то типо заглушки :

Java
1
2
3
4
5
6
7
8
9
System.out.println("Введите что нибуть: ");
temp = scan.nextLine().toLowerCase().trim();
 
while(temp.length() < 2 || intChecker(temp)){
 System.out.println("Что то не правильно!");
 
System.out.println("Введите что нибуть: ");
temp = scan.nextLine().toLowerCase().trim();
}
0
05.06.2013, 09:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2013, 09:34

Найти все вхождения строки через цикл for
public static void findSumbolsIndexFor() { String string1 =...

Удаление первого вхождения второй строки в первую
Даны две строки. Удалить в первой строке первое вхождение второй строки. Мои...

Строка: заменить в строке все вхождения символа X на 0
Собственно есть к примеру такой код xx324x23425xxxx Мне нужно заменить x на 0,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru