Здесь:
String string1 = scan.nextLine().nextLine();
Давайте разберемся:
String string1 = scan.nextLine()
вызывает nextLine()
на сканере. Возвращает String .
Таким образом, ваш код сводится к
String string1 = someOtherString.nextLine();
что, конечно, не может работать. Потому что класс String не имеет представления о следующей строке, и поэтому такого метода нет!
Помните: сканер возвращает строку, и это два совершенно разных объекта.
Если вы берете яйцо из коробки, с какой стати вы ожидаете, что вы можете взять другое яйцо из того яйца, которое у вас есть ?! Вы можете взять два яйца из одной коробки, но не яйцо из яйца.
Наконец: да, есть идея «плавных» API, которые позволяют связывать вызовы методов «такими» способами. Но это может работать только для сценариев, которые специально предназначены именно для этого.