Вот мой кодЧтение из консоли в Java
import java.util.InputMismatchException;
import java.util.NoSuchElementException;
import java.util.Scanner;
public class Person {
private static final String VALID_NAME = "Please enter a valid name!";
private static final String VALID_ID = "ID must contain integers";
private static final String VALID_ADDRESS = "Please enter a valid adress!";
private static final String VALID_INPUT = "Bad input";
public static Scanner input = new Scanner(System.in);
public static String inputAdress() {
String personAdress = null;
try {
if (input.hasNextLine()) {
personAdress = input.nextLine();
} else {
System.err.println(VALID_ADDRESS);
}
} catch (InputMismatchException e) {
System.err.println(VALID_INPUT);
} catch (NoSuchElementException e) {
System.err.println(VALID_INPUT);
} catch (IllegalStateException e) {
System.err.println(VALID_INPUT);
}
return personAdress;
}
public static long inputID() {
long ID = 0;
try {
if (input.hasNextLong()) {
ID = input.nextLong();
} else {
System.err.println(VALID_ID);
}
} catch (InputMismatchException e) {
System.err.println(VALID_INPUT);
} catch (NoSuchElementException e) {
System.err.println(VALID_INPUT);
} catch (IllegalStateException e) {
System.err.println(VALID_INPUT);
}
return ID;
}
public static String inputName() {
String personName = null;
try {
if (input.hasNextLine()) {
personName = input.nextLine();
} else {
System.err.println(VALID_NAME);
}
} catch (InputMismatchException e) {
System.err.println(VALID_INPUT);
} catch (NoSuchElementException e) {
System.err.println(VALID_INPUT);
} catch (IllegalStateException e) {
System.err.println(VALID_INPUT);
}
return personName;
}
}
public static void main(String[] args) {
personName = Person.inputName();
ID = Person.inputID();
personAdress = Person.inputAdress();
System.out.println(personName + " " + ID + " " + personAdress);
}
Проблема заключается в том, что после того, как ID = Person.inputID(); программа завершает и печатает только имя и идентификатор. Если я вызываю inputID как последний, проблем нет. Я пытался отлаживать и personAdress получать пустую строку без ввода. Любые идеи почему?