Короткий ответ: вам нужно выполнить обратный вызов следующим образом:
function callback(response) {
// Here you can do what ever you want with the response object.
console.log(response);
}
$.ajax({
url: "...",
success: callback
});
Я всегда предпочитаю читать ввод с использованием 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
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"));
Из документации для Scanner :
Сканер разбивает свой вход на токены с использованием шаблона разделителя, который по умолчанию соответствует пробелу.
Из документации для next () :
Допускается полный токен и затем ввод, соответствующий шаблону разделителя.
< / BLOCKQUOTE>
У меня также возникла проблема с разделителем. вопрос был о входных данных
Проблема
Решение
Я использовал разделитель для своего сканера и успешно прошел
Пример
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);
}
Вкратце: если вы вводите строковый массив длины 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
Из JavaDoc:
blockquote>
- A
Scanner
разбивает свой вход на токены, используя шаблон разделителя, который по умолчанию соответствует пробелу.next()
: Находит и возвращает следующий полный токен с этого сканера.nextLine()
: продвигает этот сканер мимо текущей строки и возвращает пропущенный вход.Таким образом, в случае
"small example<eol>text"
next()
должен возвращать «маленький», аnextLine()
должен возвращать «маленький пример»
То, что я заметил отдельно от 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 () не заканчивается до тех пор, пока вы предоставлять и вводить в нее данные для данного количества случаев.
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
Сканер разбивает свой вход на токены, используя шаблон разделителя, который по умолчанию известен 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);
}
Из javadocs
next () Возвращает следующий токен, если он совпадает с шаблоном, построенным из указанной строки. nextLine () Адаптирует этот сканер к текущей строке и возвращает вход, который был пропущен.
Какой из них вы выбираете, зависит от ваших потребностей. Если бы я читал целый файл, я бы пошел на следующую строку, пока у меня не было всего файла.
Для этого вопроса ключевым моментом является поиск того, где остановится метод, и где курсор после вызова методов. Все методы будут считывать информацию (не включает пробелы) между позицией курсора и следующими разделителями по умолчанию (пробелы, вкладки,\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 |
После этого метод следует вызывать в зависимости от вашего требования.