비디오: WEB2 JavaScript - 26.함수 : 매개변수와 인자 2024
이 Java 코드 목록에서, payOneEmployee 메소드는 데이터를 읽는 유용한 트릭을 보여줍니다. 특히, 생성 한 모든 스캐너에는 nextLine 메서드가 있습니다. (이 nextLine 메서드는 사용할 수 없지만 메서드를 사용할 수는 있습니다.)
스캐너의 nextLine 메서드를 호출하면이 메서드는 현재 텍스트 줄 끝까지 모든 것을 가져옵니다. 이 목록에서 nextLine을 호출하면 EmployeeInfo에서 전체 행을 읽을 수 있습니다. txt 파일. (다른 프로그램에서 스캐너의 nextLine 호출은 사용자가 Enter 키를 누를 때까지 키보드에서 입력 한 모든 것을 읽을 수 있습니다.)
import java. util. 스캐너; import java. io. 파일; import java. io. IOException; 공용 클래스 DoPayroll {public static void main (String args []) IOException {Scanner diskScanner = new Scanner (새 파일 ("EmployeeInfo. txt")); for (int empNum = 1; empNum <= 3; empNum ++) {payOneEmployee (diskScanner);} diskScanner. 정적 void payOneEmployee (스캐너 aScanner) {직원 anEmployee = 새로운 직원 (); an Employee. setName (aScanner. nextLine ()); an Employee. setJobTitle (aScanner. nextLine ()); an Employee. cutCheck (aScanner. nextDouble ()); aScanner. nextLine은 모든 단어를 현재 줄의 끝까지 읽습니다. 불행히도, 현재 라인의 끝까지 읽을 것을 의미하는 것은 항상 그것이 당신이 생각하는 것만은 아닙니다. nextInt, nextDouble 및 nextLine 호출을 혼합하면 지저분해질 수 있습니다. 당신이하는 일을주의 깊게 관찰하고 프로그램의 결과물을주의 깊게 확인해야합니다.
이제이 수치를 살펴보십시오.
-
nextDouble을 한 번 호출하면 5000. 00이라는 숫자가 읽히고 nextLine을 호출하면 5000. 00의 직후에 나오는 [LineBreak]가 읽 힙니다. (다음 줄은 모두 LineBreak로 읽습니다.)
-
nextLine을 호출하면 5000. 00 이후의 [LineBreak]가 읽히고 nextLine을 호출하면 Harriet Ritter [LineBreak]가 읽 힙니다.
-
5000. 00이라는 번호를 읽은 후,
해리엇 리터 (Harriet Ritter)라는 이름을 스쿠프하기 위해 두 번의 nextLine 호출이 필요합니다. 일반적으로하는 실수는 두 번의 호출 중 첫 번째 호출을 잊어 버리는 것입니다. 그림에서 파일을 다시보십시오. 이 섹션의 코드가 올바르게 작동하려면 마지막 10000 이후에 줄 바꿈이 있어야합니다. 00. 그렇지 않으면 nextLine에 대한 최종 호출로 인해 프로그램이 중단되고 구워집니다. NoSuchElementException: No line found 오류 메시지가 읽습니다.
각 프로그래밍 언어의 검색 방법에서 발견되는 단점의 수가 놀랄 것입니다. 예를 들어 그림에서 파일을 읽는 첫 번째 nextLine은 Barry Burd [LineBreak]를 파일에서 제거합니다.
하지만 nextLine 호출은 Barry Burd (줄 바꿈없이)를 실행중인 코드로 전달합니다. 그래서 nextLine은 줄 바꿈을 찾고, nextLine은 줄 바꿈을 잃습니다. 예, 이것은 미묘한 점입니다. 그리고이 미묘한 점은 누구에게도 문제를 일으키지 않습니다.
nextDouble 및 nextLine에 대한 비즈니스가 귀하를 혼란스럽게하는 경우 Java에 책임을 부여하지 마십시오. 입력 통화를 믹싱하는 것은 모든 컴퓨터 프로그래밍 언어에서의 섬세한 작업입니다. 그리고 정말 불쾌한 점은 각 프로그래밍 언어가 문제에 조금 다르게 접근한다는 것입니다.
Java에서 nextLine에 대해 알아 낸 점은 C ++ 또는 Visual Basic에 대해 알게되었을 때의 문제를 이해하는 데 도움이되지만 모든 내용을 알려주지는 않습니다. 각 언어의 세부 정보는 해당 언어에 고유합니다.