Основы Java. Как работает nextLine. Или не nextLine

227
25 мая 2017, 08:40

Есть такой код:

import java.util.Scanner;
public class NoobsIm {
    public static void main(String[] args) {
        boolean continueWhile = true;
        Scanner inp = new Scanner(System.in);
        do {
            System.out.print("> ");
            String inputText = inp.nextLine();
            if (inputText == "m") {
                System.out.println("сработало");
                continueWhile = false;
            }
            else {
                System.out.println("не сработало");
            }
        } while (continueWhile);
    }
}

И, если честно, делает какую-то ерунду! Ввожу "m" — выводит "не сработало". Ввожу "Что-то там" — выводит то же самое.

Answer 1

Оператор сравнения == в Java возвращает true либо при сравнении примитивных типов имеющих одинаковые значения, либо при сравнении двух одинаковых объектов (ссылок на один и тот же объект). В вашем случае два объекта типа String являются разными, хоть и содержат внутри себя одинаковые данные.

Для сравнения объектов используют оператор equals(), где он реализован. Т.е. в вашем случае надо делать так:

if(inputText.equals("m")){
READ ALSO
Не могу никак подписать Андроид Студио приложение с помощью pepk.jar?

Не могу никак подписать Андроид Студио приложение с помощью pepk.jar?

За два дня так и не смог подписать приложение с помощью pepkjar !

422
Thread порядок выполнения

Thread порядок выполнения

Использую ThreadЗапускаю его myThread

252
Доступ к View элементам сторонней разметки

Доступ к View элементам сторонней разметки

ПриветствуюЯ использую DialogFragment который вызывается из главного Activity, в самом DialogFragment я использую собственную разметку, в которой реализован...

230
DDD, Aggregate root без ORM, как сохранять?

DDD, Aggregate root без ORM, как сохранять?

Следуя методологии DDD вся логика домена находится внутри домена и не выносится в отдельные сервисыВопрос в том как сохранять изменения корня...

232