Печать корпуса переключателя

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

   switch (name.toLowerCase()) {
            case "john":
                salary = 12;
                break loop;

            case "jack":
            case "jonathen":
                salary = 6;
                break loop;

            default:
                System.out.println("\n\tWrong Name Dude!");
                break;

        }
        System.out.print(name)

Что я хочу сделать, так это когда пользователь вводит john, или JOHN, или joHn, я просто хочу, чтобы было напечатано «john». Что и есть на самом деле '' имя. Проблема в том, что если я использую назначенную строку для ее печати, to.lowercase будет определять, что это «john» при вводе «JoHn», но при печати он будет печатать «JoHn» вместо «john» какие-либо предложения?

Ваш вопрос непонятен

user7 30.03.2018 18:03

Использовать toLowerCase() при печати точно так же, как и на коммутаторе? Или вместо того, чтобы вызывать метод 2 раза, просто сделайте имя в нижнем регистре, прежде чем делать все это. name = name.toLowerCase()

takendarkk 30.03.2018 18:04

Из какого цикла вы выходите из цикла break ;?

cpp beginner 30.03.2018 18:06
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
3
2 914
3

Ответы 3

Попробуй просто распечатать name.toLowerCase()

Не могу поверить, что забыл об этом, стыдно, что даже спросил. Большое спасибо

anjula serasinghe 30.03.2018 18:07

измените свой код следующим образом:

name = name.toLowerCase();
switch (name) {
        case "john":
            salary = 12;

            break loop;
        case "jack":
        case "jonathen":
            salary = 6;
            break loop;
            default:
            System.out.println("\n\tWrong Name Dude!");
            break;

    }
    System.out.print(name)

причина в том, что name.toLowerCase() просто возвращает нижний регистр имени переменной, но не изменяет само имя, поэтому вы должны присвоить возвращаемое значение имени.

Класс Нить в Java является неизменным, что означает, что после создания объекта String любая операция, которую вы выполняете над ним, не изменит значение объекта, а вместо этого вернет строку новый, которая является результатом вызванного вами метода (toLowerCase в этот случай).

Чтобы добиться желаемого, вам просто нужно сохранить ссылку на новую строку в другой переменной. Вы можете попробовать что-то вроде этого:

switch (name = name.toLowerCase()) {
        case "john":
            salary = 12;

            break loop;
        case "jack":
        case "jonathen":
            salary = 6;
            break loop;
            default:
            System.out.println("\n\tWrong Name Dude!");
            break;

    }
    System.out.print(name)

Другие вопросы по теме