80
2018-03-13 23:23:46
5
426

do ~while 문 예제 문제입니다


안녕하세요 초보개발자입니다.

다름이아니라 난수구하기 do -while 문을 사용하면서 이해가 안되는부분이있어서 여쭤보고싶어서 이렇게 올립니다.


package 삼월십삼일;


import java.util.Scanner;


public class FlowEx28 {

public static void main(String args[]) {

int input = 0;

int answer = 0;

answer = (int) (Math.random() *100) +1; //1에서 100까지 난수 발생

Scanner scanner = new Scanner(System.in);

do{

System.out.println("1과 100사이의 정수를 입력하세요 >>");

String tmp = scanner.nextLine();

input = Integer.parseInt(tmp);

if(input > answer) {

System.out.println(" 더작은수로 다시 시도해보세요");

} else if(input < answer) {

System.out.println("더큰수로 다시시도 해보세요");

}

}while(input !=answer);

System.out.println("정답입니다.");

}

}

현재 이러한 소스로 구성이 되어 있는데요 
마지막부분에 

while(input !=answer);

System.out.println("정답입니다.");

이부분이 이해가 되지않습니다 

input 값이 answer 값과 다르면 정답이라는 문구를 출력하는데요

정상같으면 제가 입력한수와 난수와 같을시에 정답입니다를 출력하지않나요 ?

소스를 실행시켜봐도 제가생각한내용이 틀려서요 

간단한 문제라 올릴까말까하고검색도 해보았지만 마땅한 답변을 얻을 수가 없어서 이렇게 질문드립니다.

0
0
  • 답변 5

  • 세브라이드
    972
    2018-03-13 23:36:28

    if else문이랑 햇갈리신 것 같네요.


    do {
            ...
    }
    while (input != tmp) // 인풋값과 tmp값이 다르면 do를 돌려라
    // input == tmp일 경우 do-while 탈출
    System.out.println("정답입니다.") // while을 탈출했으므로 이 명령줄이 드디어 실행됨
    


    제가 잘 설명했나 모르겠네요. ~.~

    0
  • 초코쪼꼬
    6k
    2018-03-14 09:52:41

    음..?

    "input 값이 answer 값과 다르면 정답이라는 문구를 출력하는데요
    정상같으면 제가 입력한수와 난수와 같을시에 정답입니다를 출력하지않나요 ?
    소스를 실행시켜봐도 제가생각한내용이 틀려서요 "

    질문하신 이유가 난수와 내가 scanner에 입력한 수가 다를때 정답이라고 뜨는게 문제인가요?

    answer = (int) (Math.random() *100) +1; //1에서 100까지 난수 발생
    Scanner scanner = new Scanner(System.in);
    System.out.println(answer);

    이렇게 입력해두고 보이는 난수 입력시는 무조건 정답일테니 그렇게 테스트 해보면 될거 같고..
    테스트 해보니 scanner에 입력한값과 answer에 나오는값이 같을때만 정답이라고 뜹니다.

    0
  • 천재가 될 사람
    146
    2018-03-14 15:16:54 작성 2018-03-14 15:18:32 수정됨

    민트맛밤 님이 잘 설명해주셨네요..

    do~while(조건)

    여기서 조건이 true면 다시 위로 올라가서 정수를 입력하게 하는것이죠

    조건이 입력값이 난수와 다르면 조건을 만족(true)시켜서 다시 위로 올라가게 되면서 루프(do~while은 반복문)를 도는 거에요.

    만약 입력값과 난수가 같다면 조건을 만족 시키지 못한니까(false)

    while를 빠져 나와서 밑에 프린트 문으로 성공 메시지를 남기는 거고요.

    0
  • 천재가 될 사람
    146
    2018-03-14 15:28:27

    질문글을 다시보니 위에 소스가 생각한 내용과는 다르게 나와서 질문하신거네요..

    님이 적어주신 내용으로 나오는게 맞죠.


    input 값이 answer 값과 다르면 정답이라는 문구를 출력하는데요

    정상같으면 제가 입력한수와 난수와 같을시에 정답입니다를 출력하지않나요 ?


    이렇게 적어주셨는데 이렇게 나오는게 맞고 위에 소스도 그렇게 나오게 잘 처리 하신거 같습니다.

    정상적으로 입력한 값과 난수가 같을때 정답입니다 라고 잘 나오네요...



    0
  • 80
    2018-03-14 21:57:09

    아 .. 제가잘못이해를했던거같습니다 

    설명 해주셔서 감사합니다 ㅠㅠㅠㅠ

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.