[Technical Issue] Java Basics - Каква е разликата между next() и nextLine()?
Здравейте,
Прочетох из нета за разликите между двата метода. Очевидно, обаче, не схващам нещо, защото не мога да разбера защо, когато решавам задачата и използвам next() ми се получава, а с nextLine() излизат неща, които не искам :) Става дума за задачата от домашното към Intro to Java за сортиране на масиви (задача 8)(да се зададат определен брой думи от конзолата и програмата да ги сортира по азбучен ред). Ето го кодът, който пиша:
import java.util.*;
public class Problem08_SortArrayOfStrings {
public static void main(String[] args){
int n;
Scanner input = new Scanner(System.in);
System.out.print("Enter a number n: ");
n = input.nextInt();
String[] words = new String[n];
for (int i = 0; i < n; i++) {
System.out.print("Enter a word: ");
words[i] = input.nextLine();
}
Arrays.sort(words);
System.out.println(Arrays.toString(words));
}
}
Когато по този начин е зададено да се пълни масивът от конзолата, ми излиза два пъти един след друг написано "Enter a word", с възможност да се впише само един стринг, след което след сортирането винаги първото място в новия масив е празно:
Enter a number n: 3
Enter a word: Enter a word: abc
Enter a word: cde
[, abc, cde]
Когато заменя nextLine с next няма проблем и работи коректно. Не разбирам, обаче, защо. Някой може ли да ми обясни?
Това е май най-чистият вариант. Само че трябва да се внимава на реда да се въведе само числото, защото всякакви спейсове ще изгърмят.
Винаги може да се използва .trim()
Integer.parseInt(input.nextLine().trim())