Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.92/48: Рейтинг темы: голосов - 48, средняя оценка - 4.92
 Аватар для Chevalier
2 / 2 / 0
Регистрация: 26.04.2013
Сообщений: 23

Как определить тип данных, которые были введены в поле JTextField?

30.07.2013, 02:51. Показов 9693. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток!
Уважаемые знатоки, подскажите:
есть поле типа JTextField, в него вводим данные..., и если данные не подходят по типу который нам надо, то надо вывести сообщение что не верный тип данных...
(в поле должны вводиться только числа, если пользователь вводит не числовые данные (например String), то надо это отследить..., как это сделать?).
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.07.2013, 02:51
Ответы с готовыми решениями:

Как сделать проверку что числа были в поле пароль введены? prompt
this.password = prompt('type pass only numiretic','777'); чтоб если хоть одна буква есть то false

Как исключить из Comboboxa значения, которые уже были введены в ячейки Excel?
Вот, допустим, я ввожу данные в 4-х combobox'ax, после ввода нажатием кнопки, каждый combobox вводится в таблицу Excel, каждый комбобокс...

Как сравнивать данные из текстового файла с данными которые были введены через LineEdit?
Доброго времени суток, проблема заключается в том что нужно сделать проверку между словами в (к примеру test.txt) и словом или фразой...

28
91 / 91 / 10
Регистрация: 18.05.2013
Сообщений: 265
30.07.2013, 09:46
Вам поможет JFormattedTextField.
Подробности:
http://docs.oracle.com/javase/... field.html
1
 Аватар для Chevalier
2 / 2 / 0
Регистрация: 26.04.2013
Сообщений: 23
30.07.2013, 12:39  [ТС]
спасибо, но не очень понял как мне его прикрутить, чтоб определять тип введенных данных в поле JTextField()...
Возможно не правильно озложил вопрос...:
я играюсь с калькулятором..., необходимо отслеживать данные которые вводим (только цифры, например только double), если тип не подходит, то выводить сообщени о некорректных данных...
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
30.07.2013, 12:53
можно написать метод, который контролировал бы это
1
 Аватар для Chevalier
2 / 2 / 0
Регистрация: 26.04.2013
Сообщений: 23
30.07.2013, 13:25  [ТС]
можно метод, но думал что есть конкретный механизм отслеживания (как например отслеживания класса...)
С задачей справился, заменил JTextField() на JFormattedTextField()...

Добавлено через 1 минуту
edwin3d, tankomaz, спасибо за помощь:-)
0
 Аватар для Gepar
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
31.07.2013, 00:18
Если надо только числа то решается банальным добавлением слушателя на ввод и отсеивание всего что числом не является.

Добавлено через 1 минуту
Хотя вижу вам и JFormattedTextField подошёл, но он же немного для других целей.
0
 Аватар для Chevalier
2 / 2 / 0
Регистрация: 26.04.2013
Сообщений: 23
31.07.2013, 01:56  [ТС]
да, как вариант можно, но я хотел узнать нет ли возможности без манипуляций с новым методом или корректировками в слушателе...
ну что то типа getClass...
спасибо за подсказки и отклик:-)
0
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
01.08.2013, 01:27
Chevalier, что тут сложного? Считование делаете с помощью nextDouble и помещаете єту строчку в трай&кетч. Если не сможет преобразовать в дабл, то вибравивается ексепшн, в кетче обрабативаете как ваш хочется.
0
 Аватар для Chevalier
2 / 2 / 0
Регистрация: 26.04.2013
Сообщений: 23
01.08.2013, 11:48  [ТС]
Как вариант- да.
Но повторюсь- хотел узнать нет ли что то типа getClass...
try/catch() как один из вариантов рассматривался...
спасибо:-)
0
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
01.08.2013, 12:47
Chevalier, тогда JFormattedTextField тот вариант.
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
01.08.2013, 13:49
Цитата Сообщение от animator404 Посмотреть сообщение
Chevalier, что тут сложного? Считование делаете с помощью nextDouble и помещаете єту строчку в трай&кетч. Если не сможет преобразовать в дабл, то вибравивается ексепшн, в кетче обрабативаете как ваш хочется.
исключения не должны быть частью работы программы, это "о-май-гад фсему капец" случаи должны быть не связанны никоим образом с логикой (или частью) работы программы, так что не советую
0
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
01.08.2013, 14:34
tankomaz, я єто знал. Но программа не серйозная поєтому как варипнт и предложил.
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
01.08.2013, 15:42
Цитата Сообщение от tankomaz Посмотреть сообщение
исключения не должны быть частью работы программы
в этом конкретном случае просто нет вариантов сделать определение типа без использования исключений, поэтому вопрос спорный.

я бы поступил так:
пробовал бы все типы начиная с самого узкого и в кечах по нарастаюшей расширял бы, пока данные не удовлетворят типу

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

не хош париться с типами юзай питон или перл с гуями от gtk или qt, там эти вопросы даже не поднимаются
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
01.08.2013, 15:57
Цитата Сообщение от mutagen Посмотреть сообщение
в этом конкретном случае просто нет вариантов сделать определение типа без использования исключений, поэтому вопрос спорный.
...
метод boolean, если хоть одна "проверка" не прошла успешно - false, я про это
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
01.08.2013, 15:59
Цитата Сообщение от tankomaz Посмотреть сообщение
метод boolean, если хоть одна "проверка" не прошла успешно - false, я про это
покажите пример кода как определить Integer, Long, Double и Float в одном поле - не ухватил вашу идею
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
01.08.2013, 16:30
Цитата Сообщение от mutagen Посмотреть сообщение
покажите пример кода как определить Integer, Long, Double и Float в одном поле - не ухватил вашу идею
конкретно Long от Integer можно поймать только за превышения макс-мин диапазона, типы с точкой - собственно по наличию дробной части. Задание в принципе интересное, можно попробовать реализовать и посмотреть насколько это имеет место быть правдой

Добавлено через 28 минут
вот "как-то так" начало пути определения, по параметру влезет ли по значению в тот или иной тип проверки нет
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
27
28
29
30
31
32
33
34
35
36
37
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
class Clazz {
    public static void main(String [] args) {
        whatIsType("1235.3");
    }
    
    public static void whatIsType(Object obj) {
        Pattern pattern;
        Matcher matcher;
        
        pattern = Pattern.compile("^[0-9]+\\.[0-9]$");
        matcher = pattern.matcher(obj.toString());
        if (matcher.find()) {       
            System.out.println("type: float/double");
            System.out.println(matcher.group());
            return;
        }
        
        pattern = Pattern.compile("^[0-9]+$"); //integer/long
        matcher = pattern.matcher(obj.toString());
        if (matcher.find()) {
            System.out.println("type: Integer");
            System.out.println(matcher.group());
            return;
        }
        
        pattern = Pattern.compile(".+"); //String
        matcher = pattern.matcher(obj.toString());
        if (matcher.find()) {
            System.out.println("type: String");
            System.out.println(matcher.group());
            return;
        }
    }
}
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
01.08.2013, 16:37
ну нет, тока не рекспами ))) это же из пушки по воробьям )))
0
любитель покушать
 Аватар для Севак
687 / 641 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
01.08.2013, 16:46
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
27
package com.sevak_avet.Test;
 
public class Test {
    public static void main(String[] args) {
        whatIsType(123);
        whatIsType(new Test());
    }
    
    public static void whatIsType(Object obj) {
        switch(obj.getClass().toString()) {
            case "class java.lang.Integer":
                System.out.println("Integer");
                break;
            case "class java.lang.Double":
                System.out.println("Double");
                break;
            case "class java.lang.String":
                System.out.println("String");
                break;
            case "class java.lang.Long":
                System.out.println("Long");
                break;
            default:
                System.out.println("Не знаю, что это за класс, прости, хозяин ;(");
        }
    }
}
1
 Аватар для Chevalier
2 / 2 / 0
Регистрация: 26.04.2013
Сообщений: 23
01.08.2013, 16:54  [ТС]
Цитата Сообщение от Севак Посмотреть сообщение
2
package com.sevak_avet.Test;
public class Test {
public static void main(String[] args) {
whatIsType(123);
whatIsType(new Test());
.....
вот примерно то что мне надо было изначально))))
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
01.08.2013, 16:57
Цитата Сообщение от Севак Посмотреть сообщение
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
27
package com.sevak_avet.Test;
 
public class Test {
    public static void main(String[] args) {
        whatIsType(123);
        whatIsType(new Test());
    }
    
    public static void whatIsType(Object obj) {
        switch(obj.getClass().toString()) {
            case "class java.lang.Integer":
                System.out.println("Integer");
                break;
            case "class java.lang.Double":
                System.out.println("Double");
                break;
            case "class java.lang.String":
                System.out.println("String");
                break;
            case "class java.lang.Long":
                System.out.println("Long");
                break;
            default:
                System.out.println("Не знаю, что это за класс, прости, хозяин ;(");
        }
    }
}
а если в случае как с полем на вход строка

Добавлено через 2 минуты
хе, получилось float от double отличать
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
class Clazz {
    public static void main(String [] args) {
        whatIsType("1444433333332333333333333333333333333333333333333.2");
    }
    
    public static void whatIsType(Object obj) {
        Pattern pattern;
        Matcher matcher;
        
        
        pattern = Pattern.compile("^[0-9]+\\.[0-9]$"); //double/float
        matcher = pattern.matcher(obj.toString());
        if (matcher.find()) {
            BigDecimal bigDecimal = new BigDecimal(obj.toString());
            if (!Float.isInfinite(bigDecimal.floatValue())) {
                System.out.println("its float");
                return;
            }
            if (!Double.isInfinite(bigDecimal.doubleValue())) {
                System.out.println("its double");
                return;
            }
            
        }
        
        pattern = Pattern.compile("^[0-9]+$"); //integer/long
        matcher = pattern.matcher(obj.toString());
        if (matcher.find()) {
            System.out.println("Int\\Long");        
            return;
        }
        
        pattern = Pattern.compile(".+"); //String
        matcher = pattern.matcher(obj.toString());
        if (matcher.find()) {
            System.out.println("type: String");
            System.out.println(matcher.group());
            return;
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.08.2013, 16:57
Помогаю со студенческими работами здесь

Напечатайте все числа из интервала, которые не были введены
Пусть вводится последовательность чисел в диапазоне от1 до 255. Признак конца последовательности-0. Определите переменые min и max как...

Память: куда записываются данные, которые были введены с клавиатуры?
вопрос1. куда записываются данные, которые были введены с клавиатуры? при динамическом выделении памяти, значения записываются в выделенные...

Вывести по одному разу все числа из интервала(min, max), которые не были введены
Задание Пусть вводится последовательность чисел в диапазоне от 1 до 255. Признак конца последовательности - 0. Определите переменые min и...

При выводе на экран результатов которые были введены из файла не отображается исходная матрица
uses crt; const nmax=5000; type mas=array of real; const glav:array of string=('1-Zadanie1', ...

Вывести на консоль количество чисел, которые были введены пользователем, их общую сумму и среднее арифметическое
Организовать беспрерывный ввод чисел с клавиатуры, пока пользователь не введет 0. После ввода нуля, показать на экран количество чисел, ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru