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

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

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

Author24 — интернет-сервис помощи студентам
Доброе время суток!
Уважаемые знатоки, подскажите:
есть поле типа JTextField, в него вводим данные..., и если данные не подходят по типу который нам надо, то надо вывести сообщение что не верный тип данных...
(в поле должны вводиться только числа, если пользователь вводит не числовые данные (например String), то надо это отследить..., как это сделать?).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.07.2013, 02:51
Ответы с готовыми решениями:

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

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

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

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

28
любитель покушать
687 / 641 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
01.08.2013, 16:58 21
Author24 — интернет-сервис помощи студентам
tankomaz, ну это да
0
2586 / 2259 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
01.08.2013, 17:25 22
Цитата Сообщение от Севак Посмотреть сообщение
Кликните здесь для просмотра всего текста
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("Не знаю, что это за класс, прости, хозяин ;(");
        }
    }
}


Севак тока не надо читов ))) у поля ввода JTextField изначальный тип стринг

протестируй ка реальный мир
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import static q.Test.whatIsType;
 
/**
 *
 * @author mutagen
 */
public class NoWayToCheat {
 
    public NoWayToCheat() {
        JFrame frame = new JFrame();
        frame.setLayout(new FlowLayout());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        final JTextField jt = new JTextField("test");
        frame.getContentPane().add(jt);
        JButton checkType = new JButton("check");
        checkType.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                whatIsType(jt.getText());
            }
        });
        frame.add(checkType);
        frame.pack();
        frame.setVisible(true);
    }
 
    public void go() {
    }
 
    public static void main(String[] args) {
 
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
               new NoWayToCheat().go();
            }
        });
 
    }
 
    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("Не знаю, что это за класс, прости, хозяин ;(");
        }
    }
}
0
любитель покушать
687 / 641 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
01.08.2013, 17:27 23
mutagen, просто отвлекся немного от начальной темы и забыл, что источник текста - текстфилд
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
01.08.2013, 18:25 24
Вообщем вот мой "и смех и грех" с катастрофическим подходом к точности типов Integer/Long, но как говориться "прототип v0.1"

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
47
48
49
50
51
import java.math.BigDecimal;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
class Clazz {
    public static void main(String [] args) {
        whatIsType("123");
    }
    
    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()) {
            BigDecimal bigDecimal = new BigDecimal(obj.toString());
            if (obj.toString().length() < 10) {
                System.out.println("its Integer");
                return;
            }
            if (obj.toString().length() >= 10 && obj.toString().length() < 19 ) {
                System.out.println("its Long");
                return;
            }
        }
        
        pattern = Pattern.compile(".+"); //String
        matcher = pattern.matcher(obj.toString());
        if (matcher.find()) {
            System.out.println("its String");
            return;
        }
    }
}
0
2586 / 2259 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
01.08.2013, 19:40 25
вариант конечно вариант, но надо помнить что каждый символ в регекспе равен одному if, вот и посчитайте сколько у вас if-ов )
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
01.08.2013, 19:52 26
не люблю исключения, но доволи интересная конструкция намечается
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
class Clazz {
    public static void main(String[] args) {
        String inputData = "1231232332";
 
        try {
            byte b = Byte.valueOf(inputData);
        } catch (NumberFormatException e) {
            System.out.println("это не Байт");
        }
 
        try {
            short s = Short.valueOf(inputData);
        } catch (NumberFormatException e) {
            System.out.println("это не Short");
        }
 
        try {
            int b = Integer.valueOf(inputData);
        } catch (NumberFormatException e) {
            System.out.println("это не Integer");
        }
 
        try {
            long b = Long.valueOf(inputData);
        } catch (NumberFormatException e) {
            System.out.println("это не Long");
        }
 
        try {
            float b = Float.valueOf(inputData);
        } catch (NumberFormatException e) {
            System.out.println("это не Float");
        }
 
        try {
            double b = Double.valueOf(inputData);
        } catch (NumberFormatException e) {
            System.out.println("это не Double");
        }
 
    }
}
кстати, какие варианты возврата конкретного типа кто предложит?
предлагаю как в *nix системах rwx (1+2+4) систему разработать и внедрить )
0
2586 / 2259 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
01.08.2013, 19:57 27
Цитата Сообщение от tankomaz Посмотреть сообщение
кстати, какие варианты возврата конкретного типа кто предложит
<? extends Number>
0
3 / 3 / 1
Регистрация: 11.05.2013
Сообщений: 13
02.08.2013, 04:14 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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package field;
 
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
 
public class Field {
 
    JFrame frame = new JFrame("Test");
    JPanel panel = new JPanel();
    JTextField field = new JTextField(10);
 
    public Field() {
        panel.add(field);
 
        field.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                whatIsType(field.getText());
                //whatIsType2(field.getText());
            }
        });
 
 
        frame.setContentPane(panel);
        frame.setVisible(true);
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
 
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new Field();
            }
        });
    }
 
    public static void whatIsType(String str) {
        char a[] = {'1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '.'};
        int l = str.length();
        char h[] = new char[l];
        int count = 0;
        int count2 = 0;
        for (int i = 0; i < l; i++) {
            h[i] = str.charAt(i);
        }
        while (count != 11) {
            for (int i = 0; i < l; i++) {
                if (a[count] == h[i]) {
                    count2++;
                }
            }
            count++;
        }
        if (l != count2) {
            System.out.println("Ошибка");
        }
    }
    
    public static void whatIsType2(String str) {
        double x=0;
        try{
        if(!"".equals(str)){
            x=Double.parseDouble(str);
        }
        }
        catch(NumberFormatException e){
            System.out.println("Ошибка");
        }
    }
}
Метод без исключения и с ним.
0
2586 / 2259 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
02.08.2013, 11:39 29
Monres, float забыл? и в double разделитель может быть как точка так и запятая, и по русской локали - какраз запятая )
0
02.08.2013, 11:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.08.2013, 11:39
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru