콘솔에서 여러 가지 (long, string)를 읽고 싶지만 그 이유를 모르겠습니다. 예를 들어 첫 번째 입력 몇 개만 작동하고 다른 사람에게는 작동하지 않습니다. 아래는 내가 말하는 코드입니다. , 주소를 요구하지 않습니다.
public void getInfo(PhoneBook PB)
{
Scanner keyboard = new Scanner(System.in).useDelimiter("\n");
String c1 = "yes";
do {
System.out.print("Name:");
PB.setName(keyboard.nextLine());
System.out.print("Family:");
PB.setFamily(keyboard.nextLine());
System.out.print("Address:");
PB.setAddress(keyboard.nextLine());
System.out.print("Number:");
PB.setNumber(keyboard.nextLong());
System.out.println("Do you want to continue(yes/no)");
c1 = keyboard.nextLine();
phoneBooks.add(PB);
}while (c1.equals("yes"));
}
미리 감사드립니다
당신이 호출 할 때 nextLong()
(또는 nextInt()
, nextDouble()
, next()
...), 당신은에 읽고있는 토큰 스캐너와 함께하지만, 따라서 그것은 매달려 떠나, 토큰 행의 끝 (EOL)에서 읽을 수 없습니다. 이 매달린 EOL 토큰은 다음에 대한 다음 호출과 함께 즉시 퍼져 nextLine()
나가므로 해당 호출은 사용자의 입력을받지 못하여 프로그램을 엉망으로 만듭니다. 이 문제를 해결하려면 EOL 토큰 일 뿐이므로 반환 된 결과를 무시하고을 가져온 nextLine()
후에 추가 호출을 추가합니다 nextLong()
.
따라서 이것을 변경하십시오.
System.out.print("Number:");
PB.setNumber(keyboard.nextLong());
System.out.println("Do you want to continue(yes/no)");
c1 = keyboard.nextLine();
이에:
System.out.print("Number:");
PB.setNumber(keyboard.nextLong());
keyboard.nextLine(): // **** add this ****
System.out.println("Do you want to continue(yes/no)");
c1 = keyboard.nextLine();
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다