Написал малюсенькую программку:
import java.util.*;
public class inputtest1
{
public static void main(String[] args)
{
Scanner ott = new Scanner(System.in);
// объявлена константа сколько сантиметров в дюйме
final double CM_PER_INCH = 2.54;
// объявлены переменные: ширина листа, высота листа, исполнитель
double paperWidth;
double paperHeigth;
String name;
// получить от пользователя значения ширины и высоты листа в дюймах
System.out.print("Введите ширину листа в дюймах: ");
paperWidth = ott.nextDouble();
System.out.print("Введите высоту листа в дюймах: ");
paperHeigth = ott.nextDouble();
// получить от пользователя его фамилию
System.out.print("Введите свою фамилию: ");
name = ott.nextLine();
// программа выводит сообщение о размерах листа и фамилию исполнителя
System.out.println("Размеры листа в сантиметрах: "
+ paperWidth * CM_PER_INCH + " на " + paperHeigth * CM_PER_INCH
+ " сантиметров");
System.out.println("Данные вводил инженер: " + name);
}
}
Скомпилировал. Стартовал.
Программа попросила ввести ширину.
Ввел ширину.
Программа попросила ввести длину.
Ввел длину.
А вот дальше программа должна была попросить ввести фамилию, но она не остановилась. А сразу вывела сообщение о размерах листа и об инженере, но без фамилии, так как шанс ввести ее программа не предоставила.
Уже второй день читаю описание метода
nextLine() на английском языке. Но никак не могу понять, почему после использования nextDouble() не работает nextLine(). Точнее, он работает, но таким образом, что я не понимаю.
Потому что, если поставить строки с
System.out.print("Введите свою фамилию: ");
name = ott.nextLine();
перед строками с nextDouble(), то программа будет останавливаться три раза, как и задумывалось.
Если есть у кого-то из зубров время и желание рассказать новичку "на спичках" почему так происходит, буду очень признателен. Или поделитесь, пожалуйста, ссылкой на русский перевод описания метода nextLine().