Я пытался ввести String с помощью next (), и при сравнении строк с использованием equals () из строки string [duplicate]

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

function callback(response) {
    // Here you can do what ever you want with the response object.
    console.log(response);
}

$.ajax({
    url: "...",
    success: callback
});
52
задан JSON C11 7 April 2015 в 06:48
поделиться

11 ответов

Я всегда предпочитаю читать ввод с использованием nextLine(), а затем анализировать строку.

Использование next() приведет только к возврату того, что появляется перед пробелом. nextLine() автоматически переводит сканер вниз после возвращения текущей строки.

Полезным инструментом для анализа данных из nextLine() будет str.split("\\s+").

String data = scanner.nextLine();
String[] pieces = data.split("\\s+");
// Parse the pieces

Для получения дополнительной информации относительно класса Scanner или класса String относятся к следующим ссылкам.

Сканер: http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html

String: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html

55
ответ дан Tristan 24 August 2018 в 03:29
поделиться
  • Просто для другого примера Scanner.next () и nextLine () выглядит так: nextLine () не позволяет вводить тип пользователя, а next () заставляет сканер ждать и считывать ввод.
     Scanner sc = new Scanner(System.in);
    
     do {
        System.out.println("The values on dice are :");
        for(int i = 0; i < n; i++) {
            System.out.println(ran.nextInt(6) + 1);
        }
        System.out.println("Continue : yes or no");
     } while(sc.next().equals("yes"));
    // while(sc.nextLine().equals("yes"));
    
1
ответ дан annoo9605 24 August 2018 в 03:29
поделиться

Из документации для Scanner :

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

Из документации для next () :

Допускается полный токен и затем ввод, соответствующий шаблону разделителя.

< / BLOCKQUOTE>
1
ответ дан Foobar 24 August 2018 в 03:29
поделиться

У меня также возникла проблема с разделителем. вопрос был о входных данных

  1. , введите свое имя.
  2. введите свой возраст.
  3. введите свой адрес электронной почты.
  4. введите ваш адрес.

Проблема

  1. Я успешно закончил с именем, возрастом и электронной почтой.
  2. Когда я придумал адрес двух слов, имеющих пробел (улица Харнет). Я только что получил первый «harnet».

Решение

Я использовал разделитель для своего сканера и успешно прошел

Пример

 public static void main (String args[]){
     //Initialize the Scanner this way so that it delimits input using a new line character.
    Scanner s = new Scanner(System.in).useDelimiter("\n");
    System.out.println("Enter Your Name: ");
    String name = s.next();
    System.out.println("Enter Your Age: ");
    int age = s.nextInt();
    System.out.println("Enter Your E-mail: ");
    String email = s.next();
    System.out.println("Enter Your Address: ");
    String address = s.next();

    System.out.println("Name: "+name);
    System.out.println("Age: "+age);
    System.out.println("E-mail: "+email);
    System.out.println("Address: "+address);
}
0
ответ дан GabMic 24 August 2018 в 03:29
поделиться

Вкратце: если вы вводите строковый массив длины t, тогда Scanner # nextLine () ожидает t строк, каждая запись в строковом массиве будет отличаться от другого путем ввода ключа. И сканер # next () будет поддерживать принимая входные данные, пока вы не нажмете enter, а сохраните строку (слово) внутри массива, которая отделена пробелом.

Давайте посмотрим на следующий фрагмент кода

    Scanner in = new Scanner(System.in);
    int t = in.nextInt();
    String[] s = new String[t];

    for (int i = 0; i < t; i++) {
        s[i] = in.next();
    }

, когда я запустите над фрагментом кода в моей IDE (скажем, для длины строки 2), не имеет значения, буду ли я вводить свою строку в качестве

. Вход как: - abcd abcd или

Вход как : -

abcd

abcd

Выход будет как abcd

abcd

Но если в том же коде мы заменим следующий () метод nextLine ()

    Scanner in = new Scanner(System.in);
    int t = in.nextInt();
    String[] s = new String[t];

    for (int i = 0; i < t; i++) {
        s[i] = in.nextLine();
    }

Затем, если вы вводите ввод в приглашении as-abcd abcd

Выход: -

abcd abcd

, и если вы вводите ввод в приглашении как abcd (и если вы нажмете enter, чтобы ввести следующий abcd в другой строке, приглашение ввода просто выйдет, и вы получите выход)

Выход: -

abcd

2
ответ дан himani1349 24 August 2018 в 03:29
поделиться

Из JavaDoc:

  • A Scanner разбивает свой вход на токены, используя шаблон разделителя, который по умолчанию соответствует пробелу.
  • next(): Находит и возвращает следующий полный токен с этого сканера.
  • nextLine(): продвигает этот сканер мимо текущей строки и возвращает пропущенный вход.

Таким образом, в случае "small example<eol>text" next() должен возвращать «маленький», а nextLine() должен возвращать «маленький пример»

13
ответ дан Mooncrater 24 August 2018 в 03:29
поделиться

То, что я заметил отдельно от next (), сканирует только до того места, где nextLine () сканирует всю строку: следующий ждет, пока не получит полный токен, где nextLine () не ждет полного токена, \n '(т. е. когда вы нажимаете клавишу ввода) курсор сканера переходит к следующей строке и возвращает предыдущую строку. Он не проверяет, дал ли вы полный ввод или нет, даже если он примет пустую строку, когда next () не принимает пустую строку

public class ScannerTest {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int cases = sc.nextInt();
        String []str = new String[cases];
        for(int i=0;i<cases;i++){
            str[i]=sc.next();
        }
     }

}

Попробуйте эту программу, изменив следующую ( ) и nextLine () in for, продолжайте нажимать «\n», который вводит ключ без ввода, вы можете обнаружить, что при использовании метода nextLine () он завершается после нажатия заданного числа случаев, когда next () не заканчивается до тех пор, пока вы предоставлять и вводить в нее данные для данного количества случаев.

7
ответ дан murali krish 24 August 2018 в 03:29
поделиться

next () и nextLine () связаны со Сканером и используются для получения входов String. Их отличия ...

next () может читать ввод только до пробела. Он не может читать два слова, разделенных пробелом. Кроме того, next () помещает курсор в ту же строку после прочтения ввода.

nextLine () считывает ввод, включая пробел между словами (то есть, он читается до конца строки\n). После ввода ввода nextLine () позиционирует курсор в следующей строке.

import java.util.Scanner;

public class temp
{
    public static void main(String arg[])
    {
        Scanner sc=new Scanner(System.in);
        System.out.println("enter string for c");
        String c=sc.next();
        System.out.println("c is "+c);
        System.out.println("enter string for d");
        String d=sc.next();
        System.out.println("d is "+d);
    }
}

Выход:

введите строку для c abc def c is abc

введите строку для d

d is def

Если вы используете nextLine () вместо next (), тогда

Вывод:

введите строку для c

ABC DEF c является ABC DEF введите строку для d

GHI d является GHI

1
ответ дан Musaddique 24 August 2018 в 03:29
поделиться

Сканер разбивает свой вход на токены, используя шаблон разделителя, который по умолчанию известен Whitespaces.

Next () использует для чтения одно слово и когда он получает пробел, он перестает читать и курсор вернется в исходное положение. NextLine (), в то время как этот читает целое слово, даже когда он встречает пробел. Курсор останавливается, когда он заканчивает чтение, и курсор возвращается в конец строки. поэтому вам не нужно использовать delimeter , когда вы хотите прочитать полное слово в качестве предложения. Вам просто нужно использовать NextLine ().

 public static void main(String[] args) {
            // TODO code application logic here
           String str;
            Scanner input = new Scanner( System.in );
            str=input.nextLine();
            System.out.println(str);
       }
1
ответ дан Negash 24 August 2018 в 03:29
поделиться

Из javadocs

next () Возвращает следующий токен, если он совпадает с шаблоном, построенным из указанной строки. nextLine () Адаптирует этот сканер к текущей строке и возвращает вход, который был пропущен.

Какой из них вы выбираете, зависит от ваших потребностей. Если бы я читал целый файл, я бы пошел на следующую строку, пока у меня не было всего файла.

3
ответ дан onesixtyfourth 24 August 2018 в 03:29
поделиться

Для этого вопроса ключевым моментом является поиск того, где остановится метод, и где курсор после вызова методов. Все методы будут считывать информацию (не включает пробелы) между позицией курсора и следующими разделителями по умолчанию (пробелы, вкладки,\n - созданные нажатием Enter), и курсор останавливается перед разделителями, за исключением nextLine (), который считывает информацию (включая пробелы, созданные разделителями) между позицией курсора и\n, а курсор останавливается за\n.

Например: (| представляет текущую позицию курсора; _ представляет пробелы; информация, полученная вызывающим методом)

23_24_25_26_27\n

Вызов nextInt (); прочитайте 23 | _24_25_26_27\n

Вызов nextDouble (); прочитайте 23_24 | _25_26_27\n

Вызов next (); прочитайте 23_24_25 | _26_27\n

Вызов nextLine (); прочитайте 23_24_25_26_27\n |

После этого метод следует вызывать в зависимости от вашего требования.

3
ответ дан Z. Zhang 24 August 2018 в 03:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: