Nano Hash - криптовалюты, майнинг, программирование

Сканер подавляет символы перевода строки (например, \n)?

Я заметил, как Scanner игнорирует символы перевода строки, такие как \n для новой строки или \" для двойных кавычек в строке, это казалось необходимым для работы, поэтому мне интересно, есть ли что-то, что я делаю неправильно, или Scanner действительно игнорирует перевод строки?

Вот пример кода, где закомментированный String text = "This \n Must \n Work!!" работает с переводом строки и выводит

Это
должно
работать!!

Но если бы мы использовали String text = sc.nextLine(); и
тип "Это \n не будет \n работать", это не создало бы новую строку, а просто вывело бы

Это \n не работает\n

в test.txt

Пример кода:


import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;

public class StoringTheString {

    public static void main(String[] args) {
        try {
            Scanner sc = new Scanner(System.in);
            System.out.println("Type anything: ");
            String text = sc.nextLine();
            // String text = "This \n Must \n Work!!!" ;
            sc.close();
            PrintWriter out = new PrintWriter("test.txt");
            out.println(text);
            out.close();
        }catch (FileNotFoundException e) {
            e.printStackTrace();

        }

    }
}


Извините, если я не совсем ясно выразился в своем сообщении, пожалуйста, прокомментируйте, если есть какие-то недоразумения, и я постараюсь уточнить.
Спасибо за ваше время ^...^

23.06.2015

  • Вы хотите сказать, что вводите escape-код \n в приглашение System.in во время работы программы? 23.06.2015
  • @Radiodef да, это то, что я имел в виду 23.06.2015
  • Хм, я просмотрел SO и не нашел похожих вопросов, поэтому я разместил этот. Угадайте, что это часть Linefeed и Escape Characters, которая мешала, в любом случае, спасибо всем за ваши усилия :) 23.06.2015

Ответы:


1

Попробуйте использовать сканер, чтобы получить ввод с клавиатуры, затем используйте другой сканер, чтобы разбить ввод на отдельные строки.

public static void main(String[] args) throws Exception {
    Scanner keyboard = new Scanner(System.in);
    System.out.print("Type anything: ");
    String text = keyboard.nextLine();

    Scanner scanner = new Scanner(text);
    // This is what will break the line apart
    scanner.useDelimiter("\\s?\\\\n\\s?");

    while (scanner.hasNext()) {
        System.out.println(scanner.next());
    }
}

Полученные результаты:

Type anything: This \n Must \n Work!!!
This
Must
Work!!!
23.06.2015
  • Что случилось с отрицательным голосом? Прокомментируйте, пожалуйста 23.06.2015
  • Я думал о том же самом. Я не мог понять разделитель, затем скопировал и вставил ваш код, и он ведет себя так, как хочет пользователь. Хороший ответ! 23.06.2015
  • Работает как шарм!!! Я предполагаю, что людям нравится случайным образом голосовать против: / Спасибо :) 23.06.2015

  • 2

    Попробуй это:

    String text = "This "+  "\r\n"+ "Must"+ "\r\n"+ "Work!!!" +"\r\n";
    

    если не работает, измените out.println(text); вывести.print(текст);

    23.06.2015
  • Они спрашивают, если вы запрашиваете у пользователя текст, и они набирают «это \n должно работать», как они получают текст, отображаемый в две строки. 23.06.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..