Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 20.01.2024
Сообщений: 4

Не срабатывает правильно switch

20.01.2024, 17:11. Показов 828. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу разобраться, почему поиск по int работает, а по String нет....
Помогите плиз, а то уже мозг сплавился...
Понимаю что скорее всего это очень банально, но я учусь самостоятельно и иногда упираюсь в какую-то мелочь и все...
конец мотивации....


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
76
77
public class User {
 
    String name;
    int age;
 
    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public void allcharacters(){
    System.out.println(name + " " +  age);
}
}
 
 
 
 
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.Arrays;
import java.util.Scanner;
 
/**
 *
 * @author denis
 */
public class Mavenproject1 {
 
    public static void main(String[] args) throws IOException {
        InputStream inputStream = System.in;
        Reader inputStreamReader = new InputStreamReader(inputStream);
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
        Scanner scanner = new Scanner(System.in);
 
        User user1 = new User("Валя", 33);
        User user2 = new User("Жора", 21);
        User user3 = new User("Тарас", 46);
 
        User[] users = new User[3];
        users[0] = user1;
        users[1] = user2;
        users[2] = user3;
 
        System.out.println("Поиск по номеру: нажми 1");
        System.out.println("Поиск по имени: нажми 2");
        int choice = scanner.nextInt();
        switch (choice) {
            case 1:
                System.out.println("Введите номер");
                int searchnumber = scanner.nextInt();
                for (int i = 0; i < users.length; i++) {
                    if (searchnumber == users[i].age) {
                        users[i].allcharacters();
 
                    }
                }
                break;
            case 2:
                System.out.println("Введите имя");
                String search = bufferedReader.readLine();
                for (int i = 0; i < users.length; i++) {
                    if (search.equals(users[i].name)) {
                        users[i].allcharacters();
 
                    }
 
                }
                break;
            default:
                System.out.println("Fuck...");
                break;
        }
    }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.01.2024, 17:11
Ответы с готовыми решениями:

Как правильно дописать программу с использованием if else - switch?
Пишу программу которая вычисляет maximum, minimum and average of 5 numbers. Проблемы с if else - switch statements. * Purpose:...

Не срабатывает switch
считаваю данные из Excel, построчно проверяю столбец, в 35 строке находится &quot;Название фильма:&quot;, но он почему-то не выполняет нужные...

Не срабатывает switch
Не работает в коде свитч. При проверке значения, должна выполняться функция, а она не выполняется... В чем проблема? #include...

13
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.01.2024, 23:03
Смешались вместе кони, люди...
Цитата Сообщение от vennium Посмотреть сообщение
InputStream inputStream = System.in;
        Reader inputStreamReader = new InputStreamReader(inputStream);
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
        Scanner scanner = new Scanner(System.in);
Зачем тут это все? Одного сканера недостаточно?
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3827 / 1664 / 429
Регистрация: 14.03.2022
Сообщений: 4,192
20.01.2024, 23:09
Цитата Сообщение от vennium Посмотреть сообщение
Не срабатывает правильно switch
...
почему поиск по int работает, а по String нет
Это не поиск.
Примитивные типы могут равняться по значению, а сложные будут равны, если ссылаются на один и тот же объект.

Java
1
2
3
4
5
6
7
int a = 1;
int b = 1;
if (a == b) // будет истинно
//
String c = "1";
String d = "1";
if (c == d) // будет ложно, т.к. это разные объекты
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.01.2024, 23:12
Лучший ответ Сообщение было отмечено vennium как решение

Решение

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
class Mavenproject1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
 
        User[] users = {new User("Валя", 33),
                new User("Жора", 21),
                new User("Тарас", 46)};
 
        System.out.println("Поиск по номеру: нажми 1");
        System.out.println("Поиск по имени: нажми 2");
        int choice = scanner.nextInt();
        switch (choice) {
            case 1:
                System.out.println("Введите номер");
                int searchnumber = scanner.nextInt();
                for (User user : users) {
                    if (searchnumber == user.age) {
                        user.allcharacters();
                    }
                }
                break;
            case 2:
                scanner.next(); // <<<<------------  !!!!!!!
                System.out.println("Введите имя");
                String search = scanner.nextLine();
                for (User user : users) {
                    if (search.equals(user.name)) {
                        user.allcharacters();
                    }
                }
                break;
            default:
                System.out.println("Fuck...");
                break;
        }
    }
}
Добавлено через 2 минуты
krvsa, тут дело не в этом. ТС сравнивает стринги правильно.
Засада в другом. Очень частая у новичков.
Когда сканером получаешь nextInt, в буфере остается перевод строки (enter таки). Вот этот \n и считывается следующим next/nextLine. (решение - см. у меня в коде с каментом)
1
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3827 / 1664 / 429
Регистрация: 14.03.2022
Сообщений: 4,192
20.01.2024, 23:13
iSmokeJC, я думал он в switch строки вставляет...
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.01.2024, 23:13
krvsa, и что тут такого?
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3827 / 1664 / 429
Регистрация: 14.03.2022
Сообщений: 4,192
20.01.2024, 23:15
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Когда сканером получаешь nextInt, в буфере остается перевод строки (enter таки).
Да. Я уже на такое натыкался...

Добавлено через 1 минуту
Цитата Сообщение от iSmokeJC Посмотреть сообщение
и что тут такого?
Такое же не будет работать?

Java
1
2
3
4
switch (choice) {
   case: "aaa"
   case: "bbb"
}
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.01.2024, 23:16
Будет
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3827 / 1664 / 429
Регистрация: 14.03.2022
Сообщений: 4,192
20.01.2024, 23:17
Во как!
Буду знать.
0
0 / 0 / 0
Регистрация: 20.01.2024
Сообщений: 4
21.01.2024, 02:53  [ТС]
Спасибо огромное. Буду разбираться помаленьку.

Добавлено через 19 минут
iSmokeJC, Проблема не решена... После чтения имени программа не выполняет поиск по массиву и просто заканчивает работу...
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
21.01.2024, 10:19
Да, пардон. В 23 строке nextLine() вместо next()
0
0 / 0 / 0
Регистрация: 20.01.2024
Сообщений: 4
21.01.2024, 14:56  [ТС]
дело в том, что ни при каких обстоятельствах не сравнивает строку... выдает что нет такого... Я уже все испробовал...
не понимаю...
Может кирилицу не воспринимает?

Добавлено через 2 минуты
Опа... На латинице заработало... Я пишу в netbeen
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
21.01.2024, 16:32

0
0 / 0 / 0
Регистрация: 20.01.2024
Сообщений: 4
21.01.2024, 16:48  [ТС]
А вот как работает у меня.
Создал два одинаковых, и вывело оба но только на латинице, а кирилицу не видит
Миниатюры
Не срабатывает правильно switch   Не срабатывает правильно switch  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.01.2024, 16:48
Помогаю со студенческими работами здесь

В операторе switch всегда срабатывает default
Привет всем, вот такая проблема ввожу указанные в case буквы, в любом случий срабатывает default, почему так? #define WINVER 0x0501 ...

Неполадка с default в switch-case - вывод срабатывает дважды
Здравствуйте! Такая вот ерундовая проблема, но хотелось бы узнать почему происходит именно так =) Есть функция, проверяющая...

В switch/case оба правила подходят, но срабатывает только второе
Никак не могу понять, почему в следующем примере не срабатывает первое по списку правило, вместо него всегда срабатывает второе : ...

Почему при работе оператора switch всегда срабатывает default?
Только взялся за изучение C# (мой первый язык программирования) Не могу понят в чем проблема. Во всех случаях срабатывает default ...

Как правильно использовать Switch()
Добрый вечер, пишу программу с использованием SWITCH() Суть проги: Напишите программу, которая вычисляет площадь поверхности плоских...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru