>Java >사용자가 입력한 배열 목록에 대한 끝없는 루프

사용자가 입력한 배열 목록에 대한 끝없는 루프

WBOY
WBOY앞으로
2024-02-05 22:00:051296검색
질문 내용

사용자가 입력한 자동차 사양을 가져와서 arraylist에 추가하는 메소드를 작성해야 합니다. 이는 입력하지 않는 것을 포함하여 사용자가 입력하려는 모든 사양을 허용해야 합니다. 이것은 나의 첫 번째 게시물입니다. 잘못된 문법에 대해 사과드립니다.

으아악

공백을 입력하면 이 조건이 false를 반환할 것 같아요. 이러한 연속 반복은 수동으로만 종료할 수 있습니다.

나도 해봤어

으아악

이것은 한 번 반복되어 arraylist를 반환하지만 더 많이 입력할 수 있어야 합니다. if 또는 while 조건을 hasextline()으로 변경하면 동일한 결과가 나옵니다. 여기서는 자동차 트림 수준에 특정 형식 기대치가 있기 때문에 hasext()를 사용합니다. 입력이 제공되지 않을 때 hasext()가 false를 반환하지 않는 이유를 이해할 수 없습니다.


정답


그것..아니요.

생각해 보세요. 컴퓨터는 무엇을 입력할지 고민하고 점심 식사가 끝날 때까지 그대로 두는 사용자와 "완료"한 사용자를 어떻게 구별합니까? 웹캠을 켜고 AI 분석을 실행하여 사용자가 입력을 마친 것처럼 보이는지 확인하세요.

system.in 키보드가 아닙니다. 이는 "jvm 프로세스의 표준 입력"인 default이며, 최소한 명령줄에서 Java 애플리케이션을 시작하는 경우 키보드에서 읽도록 설정하세요. 꼭 그럴 필요는 없습니다:

으아악

이제 system.in 이 파일을 읽습니다. 키보드에서 프로세스를 읽을 수 없습니다.

으아악

이제 아마도 바코드를 스캔할 때마다 마치 바코드 숫자를 입력하고 "Enter"1를 누른 것처럼 Java 애플리케이션이 바코드를 수신하게 됩니다.

"이 입력의 소스"부터 "끝"까지에 따라 다릅니다. 파일의 끝에 도달하면 파일이 종료됩니다.

키보드는 "오버"될 수 없습니다 - 그러니까 .hasnext() 不可能返回 false.

공백

댓글에서 '공간 진입'에 대해 말씀하셨는데요.

그럼 이해 못하시는군요scanner. 당신은 좋은 회사에 있습니다. 이것은 아마도 가장 오해되는 것입니다. stackoverflow에 넘쳐나는 질문 수를 살펴보면 실제로 그렇습니다.

scanner키보드와 관련이 없습니다 .

스캐너는 텍스트 입력 소스를 가져와서 여러 덩어리로 나눕니다. 블록을 "토큰"이라고 하며, "토큰"은 "구분 기호 사이의 모든 텍스트"로 정의됩니다. 구분 기호는 정규식으로 정의되며 기본적으로 사용되는 정규식은 s+입니다. 예를 들어 공백의 양은 제한되지 않습니다.

그러므로:

으아악

이 명령을 실행하고 명령줄에 hello world!,然后按 enter 键,并输入 my name is lajos를 입력하면 다음이 표시됩니다.

으아악

스캐너 관련 사항: "구분 기호" 아래에 있는 내용을 등록하거나 다른 방법으로 가져오는 것은 불가능합니다. 스캐너에 물어볼 수 없습니다. 공백이 몇 개 있습니까?

공간을 만났을 때 "그만해"라고 요청할 수도 없습니다. 아니요, 공백은 하나의 토큰을 다음 토큰과 구분합니다. 스캐너의 경우 Enter 키를 누르는 것과 스페이스바를 누른 다음 Enter 키를 누르는 것 사이에는

차이가 없습니다. 이것은 모두 "1개 이상의 공백 문자"이므로 구분 기호에 관한 것이므로 상호 교환이 가능하고 감지할 수 없습니다.

스캐너를 전혀 사용하고 싶지 않을 수도 있습니다. system.in 자체가 확실히 차별화할 수 있습니다.

해결책 1

일반적인 전략은 프롬프트에서 "완료"를 의미하는 마법의 단어를 언급하는 것입니다. 예:

으아악

해결책 2

트렌치 스캐너. 아니면 최소한 모든 것을 삭제하고 다른 모든 메서드와

매우nextline,它与它拥有的所有其他方法的交互非常 - 选择一个且仅一个(nextline,或除 nextline 상호 작용하는 nextline을 사용하세요. 단 하나만 선택하거나(nextline), nextline 제외):

으아악

[1] 실제로 대부분의 바코드 스캐너는 키보드처럼 보이고 작동하며 장치가 없습니다. /dev /에 존재하지 않으며 이러한 프로세스에 파이프될 수 없기 때문입니다. 그러나 예를 들어 작동합니다.

이것을 시도해 볼 수 있습니다:

으아악

위 내용은 사용자가 입력한 배열 목록에 대한 끝없는 루프의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제