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

Ввод данных через консоль

25.02.2016, 18:31. Показов 1947. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При неправельном вводе цикл должен возвращать нас обратно к вводу в правельном формате..
Не могу понять почему при правельном вводе меня возвращает обратно для повторного ввода ?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
while(true){
        System.out.println("Choose one of coupon types: 'Restaurants' 'Electricity' 'Food' 'Health' 'Sports'"
                + " 'Camping' 'Traveling': ");
        try{
        String coupon_type = input.nextLine();
        switch(coupon_type){    
        case "Restaurants": System.out.println("Entered value: "+coupon_type);break;
        case "Electricity": System.out.println("Entered value: "+coupon_type);break;
        case "Food": System.out.println("Entered value: "+coupon_type);break;
        case "Health": System.out.println("Entered value: "+coupon_type);break;
        case "Sports": System.out.println("Entered value: "+coupon_type);break;
        case "Camping": System.out.println("Entered value: "+coupon_type);break;
        case "Traveling": System.out.println("Entered value: "+coupon_type);break;
        }
      } 
        catch(Exception e){ 
        System.out.println("Wrong format");
        input.next();
       }
    }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.02.2016, 18:31
Ответы с готовыми решениями:

Ввод данных через консоль
package javaapplication1; import static java.lang.Math.*; import java.util.*; public class JavaApplication1 { /** ...

Ввод данных в консоль java
В коде программы находится таймер, который каждую секунду выводит в консоль текст. Так же, в коде есть функция, которая ловит вводимые...

Ввод значений через консоль и передача их в другой класс
Помогите разобраться со следующим моментом. Нужно организовать следующее. В одном классе я ввожу два значения через консоль. В другой класс...

14
32 / 32 / 22
Регистрация: 29.10.2015
Сообщений: 195
25.02.2016, 18:38
Choose one of coupon types: 'Restaurants' 'Electricity' 'Food' 'Health' 'Sports' 'Camping' 'Traveling':
Restaurants
Entered value: Restaurants
Choose one of coupon types: 'Restaurants' 'Electricity' 'Food' 'Health' 'Sports' 'Camping' 'Traveling':
rqwrqw
Choose one of coupon types: 'Restaurants' 'Electricity' 'Food' 'Health' 'Sports' 'Camping' 'Traveling':
rqwrqw
Choose one of coupon types: 'Restaurants' 'Electricity' 'Food' 'Health' 'Sports' 'Camping' 'Traveling':
djiqwdjiqw
Choose one of coupon types: 'Restaurants' 'Electricity' 'Food' 'Health' 'Sports' 'Camping' 'Traveling':

Вроде всё работает, или я не совсем понимаю в чём проблема
0
 Аватар для Maks088
0 / 0 / 0
Регистрация: 12.10.2014
Сообщений: 90
25.02.2016, 18:52  [ТС]
Цитата Сообщение от liptonus777 Посмотреть сообщение
Вроде всё работает, или я не совсем понимаю в чём проблема
Не могу понять почему при правельном вводе меня возвращает обратно для повторного ввода ?
0
32 / 32 / 22
Регистрация: 29.10.2015
Сообщений: 195
25.02.2016, 18:54
Maks088, Не так, как у меня?
0
4 / 4 / 3
Регистрация: 13.01.2013
Сообщений: 142
25.02.2016, 19:00
Вместо break попробуйте exit использовать. System.exit(). Должно помочь.
0
 Аватар для Maks088
0 / 0 / 0
Регистрация: 12.10.2014
Сообщений: 90
25.02.2016, 19:50  [ТС]
Цитата Сообщение от liptonus777 Посмотреть сообщение
Maks088, Не так, как у меня?
liptonus777, Так как у тебя не должно быть..
Цитата Сообщение от Maks088 Посмотреть сообщение
При неправельном вводе цикл должен возвращать нас обратно к вводу в правельном формате..
Не могу понять почему при правельном вводе меня возвращает обратно для повторного ввода ?
Добавлено через 2 минуты
Цитата Сообщение от liptonus777 Посмотреть сообщение
Вроде всё работает, или я не совсем понимаю в чём проблема
При не правильном вводе должно выходить сообшение Wrong input и возврат обратно к вводу.
0
32 / 32 / 22
Регистрация: 29.10.2015
Сообщений: 195
25.02.2016, 20:15
Цитата Сообщение от Maks088 Посмотреть сообщение
При не правильном вводе должно выходить сообшение Wrong input и возврат обратно к вводу.
А зачем для этой цели использовать обработку исключений? Она сработает лишь в том случае, если будет выброшено исключение.
0
 Аватар для Maks088
0 / 0 / 0
Регистрация: 12.10.2014
Сообщений: 90
25.02.2016, 20:19  [ТС]
Цитата Сообщение от liptonus777 Посмотреть сообщение
А зачем для этой цели использовать обработку исключений? Она сработает лишь в том случае, если будет выброшено исключение.
Была моя ошибка переделал на следущее и тоже не работает .

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
lbl:while(true){
        System.out.println("Choose one of coupon types: "+"\n"
                + "'Restaurants' 'Electricity' 'Food' 'Health' 'Sports'"
                + " 'Camping' 'Traveling': ");
        
        String coupon_type = input.nextLine();
        switch(coupon_type){    
        case "Restaurants": System.out.println("Entered value: "+coupon_type);break lbl;
        case "Electricity": System.out.println("Entered value: "+coupon_type);break lbl;
        case "Food": System.out.println("Entered value: "+coupon_type);break lbl;
        case "Health": System.out.println("Entered value: "+coupon_type);break lbl;
        case "Sports": System.out.println("Entered value: "+coupon_type);break lbl;
        case "Camping": System.out.println("Entered value: "+coupon_type);break lbl;
        case "Traveling": System.out.println("Entered value: "+coupon_type);break lbl;
        default:System.out.println("Wrong values format input! Please choose from the list only! ");
        input.next();
        }
    }
        input.close();
0
32 / 32 / 22
Регистрация: 29.10.2015
Сообщений: 195
25.02.2016, 20: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
28
29
30
31
import java.util.Scanner;
 
public class Task {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        boolean sinput = false;
        while (true) {
            if(sinput) {
                System.out.println("Choose one of coupon types: 'Restaurants' 'Electricity' 'Food' 'Health' 'Sports'"
                        + " 'Camping' 'Traveling': ");
            }
            String coupon_type = input.nextLine();
            if (success(coupon_type)) {
                System.out.println("Entered value: " + coupon_type);
                sinput = true;
            } else {
                System.out.println("Wrong input");
                sinput = false;
            }
        }
    }
 
    public static boolean success(String s) {
        String[] sc = {"Restaurants" , "Electricity", "Food", "Health", "Sports",
                      "Camping", "Traveling"};
        for(int i = 0; i < sc.length; i++) {
            if(s.equals(sc[i])) return true;
        }
        return false;
    }
}
0
 Аватар для Maks088
0 / 0 / 0
Регистрация: 12.10.2014
Сообщений: 90
25.02.2016, 20:52  [ТС]
liptonus777,
Спасибо за код помогло.

Немного поправил на то что мне было нужно!
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
   public static void main(String[] args) {
                
                Scanner input = new Scanner(System.in); // 
                boolean sinput = false;
                while (true) {
                    if(sinput) {
                        System.out.println("Choose one of coupon types: 'Restaurants' 'Electricity' 'Food' 'Health' 'Sports'"
                                + " 'Camping' 'Traveling': ");
                    }
                    String coupon_type = input.nextLine();
                    if (success(coupon_type)) {
                        System.out.println("Entered value: " + coupon_type);
                        break;
                        //sinput = true;
                        
                    } else {
                        System.out.println("Wrong input");
                        sinput = false;
                    }
                }
            }
         
            public static boolean success(String s) {
                String[] sc = {"Restaurants" , "Electricity", "Food", "Health", "Sports",
                              "Camping", "Traveling"};
                for(int i = 0; i < sc.length; i++) {
                    if(s.equals(sc[i])) return true;
                }
                return false;
            }
        }
0
32 / 32 / 22
Регистрация: 29.10.2015
Сообщений: 195
25.02.2016, 21:07
Цитата Сообщение от Maks088 Посмотреть сообщение
то что мне было нужно!
Тогда лучше будет вот так
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
import java.util.Scanner;
 
public class Task {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Choose one of coupon types: 'Restaurants' 'Electricity' 'Food' 'Health' 'Sports'"
                + " 'Camping' 'Traveling': ");
        while (true) {
            String coupon_type = input.nextLine();
            if (success(coupon_type)) {
                System.out.println("Entered value: " + coupon_type);
                break;
            } else {
                System.out.println("Wrong input");
            }
        }
    }
 
    public static boolean success(String s) {
        String[] sc = {"Restaurants" , "Electricity", "Food", "Health", "Sports",
                      "Camping", "Traveling"};
        for(int i = 0; i < sc.length; i++) {
            if(s.equals(sc[i])) return true;
        }
        return false;
    }
}
0
 Аватар для HOBATOP
323 / 310 / 206
Регистрация: 14.09.2015
Сообщений: 827
25.02.2016, 22:03
Maks088, по Вашему коду несколько замечаний: не следовало засовывать switch в бесконечный цикл - именно по это причине Вас постоянно выносило к предложению ввода; второе: при Вашем варианте исключение возникнуть не могло и ловить его было бессмысленно; третье: а что должно было произойти при правильном вводе? Вот из этих соображений код подправлен и получилось следующее:
Кликните здесь для просмотра всего текста
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
    public static void entered() {
        System.out.println("Choose one of coupon types: 'Restaurants' 'Electricity' 'Food' 'Health' 'Sports'"
                + " 'Camping' 'Traveling': ");
        String coupon_type = new Scanner(System.in).nextLine();
        switch (coupon_type) {
            case "Restaurants":
                System.out.println("Entered value: " + coupon_type);
                kirpich();
                break;
            case "Electricity":
                System.out.println("Entered value: " + coupon_type);
                break;
            case "Food":
                System.out.println("Entered value: " + coupon_type);
                break;
            case "Health":
                System.out.println("Entered value: " + coupon_type);
                break;
            case "Sports":
                System.out.println("Entered value: " + coupon_type);
                break;
            case "Camping":
                System.out.println("Entered value: " + coupon_type);
                break;
            case "Traveling":
                System.out.println("Entered value: " + coupon_type);
                Traveling.travel(coupon_type);
                break;
            default:
                System.out.println("Error value: " + coupon_type);
                entered();
                break;
        }
    }
 
    public static void kirpich() {
        System.out.println("Приступим к кладке стены!");
    }
}
class Traveling{
    public static void travel(String in) {
        System.out.println("Будем путешествовать с " + in);
    }
}
//вот такой ввод-вывод получается:
//Choose one of coupon types: 'Restaurants' 'Electricity' 'Food' 'Health' 'Sports' 'Camping' 'Traveling': 
//jfyyf
//Error value: jfyyf
//Choose one of coupon types: 'Restaurants' 'Electricity' 'Food' 'Health' 'Sports' 'Camping' 'Traveling': 
//kmtiu
//Error value: kmtiu
//Choose one of coupon types: 'Restaurants' 'Electricity' 'Food' 'Health' 'Sports' 'Camping' 'Traveling': 
//Traveling
//Entered value: Traveling
//Будем путешествовать с Traveling

А вообще следовало бы переработать более кардинально сократить методы, подчистить повторяющийся код. Приблизительно вот так:
Кликните здесь для просмотра всего текста
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
    public static void inputOutput() {
        System.out.println("Choose one of coupon types: 'Restaurants' 'Electricity' 'Food' 'Health' 'Sports'"
                + " 'Camping' 'Traveling': ");
        String coupon_type = new Scanner(System.in).nextLine();
        System.out.print("Entered value: " + coupon_type);
        entered(coupon_type);
    }
 
    public static String entered(String coupon_type) {
        switch (coupon_type) {
            case "Restaurants":
                kirpich();
                break;
            case "Electricity":
                break;
            case "Food":
                break;
            case "Health":
                break;
            case "Sports":
                break;
            case "Camping":
                break;
            case "Traveling":
                Traveling.travel(coupon_type);
                break;
            default:
                System.out.println(" it is Error.");
                inputOutput();
                break;
        }
        return coupon_type;
    }
 
    public static void kirpich() {
        System.out.println("Приступим к кладке стены!");
    }
}
class Traveling{
    public static void travel(String in) {
        System.out.println("Будем путешествовать с " + in);
    }
}
0
 Аватар для Maks088
0 / 0 / 0
Регистрация: 12.10.2014
Сообщений: 90
26.02.2016, 16:18  [ТС]
Цитата Сообщение от HOBATOP Посмотреть сообщение
а что должно было произойти при правильном вводе?
При правельном вводе выход из цикла и продолжения выполнения программы! Я понял свою ошибку спасибо.

Добавлено через 18 часов 13 минут
Есть вопрос по поводу класса String. Хочу сделать так что при вводе цифр, выдовало ошибку..
Класс стринг принимает ввод цыфр с клавиатуры как строки.. Возможно ли поставить проверку только на случай вводе цифр ?

Java
1
2
3
4
5
while(true){
         System.out.println("Add an image of coupon: ");
         String image = input.nextLine();
         System.out.println(image);
         }
0
32 / 32 / 22
Регистрация: 29.10.2015
Сообщений: 195
26.02.2016, 17:30
Java
1
2
3
4
5
public static boolean test(String testString) {
        Pattern p = Pattern.compile("^\\d*$");
        Matcher m = p.matcher(testString);
        return m.matches();
    }
Добавьте этот метод в программу и проверяйте строку. Если в строке только цифры - вернёт true
0
 Аватар для HOBATOP
323 / 310 / 206
Регистрация: 14.09.2015
Сообщений: 827
27.02.2016, 02:22
Цитата Сообщение от Maks088 Посмотреть сообщение
Есть вопрос по поводу класса String.
Maks088, вообще то по правилам форума один вопрос - одна тема
Цитата Сообщение от Maks088 Посмотреть сообщение
Возможно ли поставить проверку только на случай вводе цифр
если предполагается, что строка состоит только из цифр, то вот liptonus777 предложил вполне рабочее решение. А если хочется фильтровать смешанный текстово-цифровой ввод, тут несколько сложнее будет, но тоже можно. Только зачем? В порядке наброска:
Кликните здесь для просмотра всего текста
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
class FindDigitsInToString {
 
    public static void stringAnalyse() {
        //пример использования метода selection
        String setStringAnalyse;
        while (true) {
            setStringAnalyse = new Scanner(System.in, "CP1251").nextLine();
            if (selection(setStringAnalyse) == true) {
                System.out.println("В строке не должно быть цифр!");
            } else {
                System.out.println("Цифр нет. Какой восторг!");
                break;
            }
        }
        System.out.printf("Что на выходе: [%s]%n", setStringAnalyse);
    }
 
    public static boolean selection(String string) {
        //метод находит цифры на любой позиции в строке
        String digits = "0123456789";
        boolean outputResult = false;
        char[] review = string.toCharArray();
        for (int i = 0; i < review.length; i++) {
            if (digits.contains(String.valueOf(review[i])) == true) {
                outputResult = true;
                break;
            }
        }
        return outputResult;
    }
 
    public static void main(String[] args) {
        stringAnalyse();
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.02.2016, 02:22
Помогаю со студенческими работами здесь

Ввод и вывод строковых данных на консоль
Здравствуйте! Подскажите по коду, что можно переделать или добавить? Задание: public class Test { public static void...

Ввод и вывод данных на консоль четных и нечетных чисел
Здравствуйте! Подскажите по коду, что можно переделать или добавить? Задача: Создать программу, которая будет сообщать, является...

Ввод данных через пробел
Возможно ли, и если возможно то как это сделать, считать с консоли ряд чисел написанных через пробел. Причем кол-во чисел конкретное....

Ввод данных через запятую, заполнение массива
Сколько ищу, никак не могу найти. Как можно сделать так, чтобы при вводе чисел в консоль (!через запятую!) заполнялся массив из 8 значений...

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
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