Заменить java, дающую 2 строки

Ну, как вы можете прочитать, когда я использую функцию replace в своем коде, он печатает: Hey, / * * Чтобы изменить этот заголовок лицензии, выберите «Заголовки лицензий» в «Свойства проекта». * Чтобы изменить этот файл шаблона, выберите «Инструменты | Шаблоны * и откройте шаблон в редакторе. * / пакет fiestaaburrida ; импортировать java . использовать . Сканер ; / ** * * @author xBaco * / public class FiestaAburrida { / ** * @param args аргументы командной строки * / public static void main ( String [] args ) { // TODO код приложения логика здесь Сканер teclado = новый сканер ( System . В ); int times = teclado . nextInt (); int index = 0 ; while ( index < times ) { String greeting = teclado . next (); String newgreeting = приветствие . заменить ( «Я» , «» ); система , из . println ( «Эй,» + newgreeting + ». ); } } } . Привет, (имя). Когда он должен печатать только Hey (имя). И я не понимаю, почему. Вот код:

Scanner.next()

java,

-3

Ответов: 3


0 принят

I'mбудет считывать ваш ввод до следующего разделителя, который по умолчанию является пространством. Из-за этого вы получаете два входа I'm Joe, а не один вход I'm Joe.

Если вы хотите взять сразу целую строку, вы должны использовать Scanner.nextLine(). (Хотя вы должны следить за этой причудой, которая повлияет на вас из-за вашего первого nextInt.)


0

Это происходит потому, что teclado.next();извлекает следующее значение в консоли, которое разделяется пробелом. Вы хотите использовать teclado.nextLine();. Хотя это не полное решение. Если бы вы следили за этим подходом и вводили «Я Джейк», то программа напечатала бы «Эй,». а затем «Эй, Джейк». Это потому, что вы используете teclado.nextInt();, что работает, но это не приведет Scanner#nextLine()к немедленному чтению «Я Джейк». Таким образом , вы должны также заменить nextInt();с nextLine();и разобрать его:

public static void main(String[] args) {
        Scanner teclado = new Scanner(System.in);
        int times = Integer.parseInt(teclado.nextLine());
        int index = 0;
        while (index < times){
            String greeting = teclado.nextLine();
            String newgreeting = greeting.replace("I'm ","");
            System.out.println("Hey, " + newgreeting + ".");
        }
}

String.replaceМетод Java находит одну строку и заменяет ее. Поэтому я рекомендую вам использоватьString.replaceAll

    // ....
    while (index < times){
        String greeting = teclado.next();
        String newgreeting = greeting.replaceAll("I'm ","");
        System.out.println("Hey, "+newgreeting+".");
    }
    // ....
Ява,
Похожие вопросы
Яндекс.Метрика