2013-11-04 3 views
1
Scanner kb=new Scanner(System.in); 
    int n=kb.nextInt(); 
    do{ 
     System.out.println("How many numbers do you wish to store?"); 

    }while (n<1); 

제 질문은 이렇게 루프를 종료하는 방법을 알 수 없으며 어떻게 그렇게 할 수 있는지 궁금합니다. 나는 사용자가 0보다 큰 값을 넣을 때까지 배열 크기에 대한 숫자를 입력해야한다는 것을 알기 위해 노력하고있다. 분명히 이것은 코드의 작은 부분이지만 정말로 그 대답의 이유를 알고 싶었다. 이. 루프는 내가 결코 잘 해본 적이없는 것이고 분명히 중요합니다. 내가 볼 수있는 것은 일반적인 구문 응답이지만, 영어로 말하면 무엇을 말하는 것일까 요? 감사합니다.루프를 어떻게 이해합니까?

답변

1

설명했듯이 사용자가 0보다 큰 값을 입력하면 루프가 종료됩니다. 현재, 사용자 입력을 기다리는 코드의 부분은 루프 밖에, 그래서 당신과 같이,에 이동해야합니다

int n = 0; // initialize our loop control variable 
do{ 
    System.out.println("How many numbers do you wish to store?"); 
    n=kb.nextInt(); 
}while (n<1); 

을 "왜"에 대한 귀하의 질문에 대답하기 위해, 나는 잘 모르겠어요 나는 당신이 찾고있는 어떤 종류의 설명을 완전히 이해하고 있지만, 기본적으로이 코드는 다음과 같은 내용을 영어로 말하고 있습니다.

저장할 사용자 수를 물어보십시오. 사용자가 0보다 작은 숫자를 입력 한 경우

, 다시 그들에게, 그리고 그들이 숫자 그것에 대해의 제로보다 큰

줄 때까지 그들에게 같은 질문을 계속합니다. 질문에 대한 오해 여부를 알려주십시오.

+1

정말 놀랍습니다. 저는 항상 포럼에 글을 올리는 것에 대해 부끄러워했습니다.하지만 반년에 한 번 학기를 찾으려고 몇 분 동안 저를 도와 주셨습니다. 바로 솔직한 대답입니다. 적어도 내 경험으로 시작하는 가장 어려운 부분은 프로그램에서 무엇을 할 것인지를 파악하는 것입니다. 따라서 그것을 번역하는 것은 놀라운 일입니다. 정말 고맙습니다. –

+0

죄송합니다.하지만 위와 같은 이유로 변수를 확인할 수 없다는 오류가 일식에서 발생합니다. 루프 외부에서 초기화하려고하면 스캐너가 강조 표시되고 중복 된 로컬 변수가 있다고합니다. –

+0

@NicholasBrandon oops yeah 나는 그것에 대해 잊어 버렸다. 'int n'부분은 블록 (중괄호로 표시) 안에 선언되며 해당 범위 내에서만 존재하며 'while'조건에서는 볼 수 없습니다. 기본적으로,'int n'은 루프 전에 선언되어야합니다. 루프 안에서 'int'부분을 제거하면'n = kb.nextInt()'만 있습니다. 나는 대답을 업데이트 할 것이다. –

0

지금 말하고있는 바로는 영어로 말하고 있습니다. n이 1보다 작 으면서 루프 내부의 내용 (즉, '{'과 '}'사이의 내용)을 수행하십시오. "while"다음에 오는 논리는 언제 멈출지를 알려줍니다. 지금 루프의 내용은 실제로 n을 변경하지 않으므로 한 번 실행하고 kb.nextInt()가 1보다 작 으면 종료하거나 영원히 실행합니다 (그렇지 않은 경우). 루프 안에서 n을 수정해야합니다.

+0

정말 고마워요. 그렇게 많은 의미가 있습니다. –

관련 문제