flag 사용법 [상품자판기]

stan·2023년 5월 21일
0

Java 개념

목록 보기
25/33
while(true) { //★ 구매하기 시도 후 올바른 값을 입력 할때 까지 다시 상품번호 입력
	System.out.println("======[구매가능 상품목록]======");
	printList(data);
	System.out.println("구매 하실 상품 번호를 입력 하세요 : ");
	try {
		num=sc.nextInt();
	}
	catch(InputMismatchException e) { //★유효성검사 : 사용자의 입력값이 올바른 값 인지 확인
		System.out.println("올바른 입력값이 아닙니다");
		sc.nextLine(); //버퍼 제거
		continue;
	}
	boolean flag = false;
	for(int i=0;i<data.size();i++) {
		if(num == data.get(i).getNum()) {
			System.out.println("구매 하실 개수를 입력 하세요 : ");
			cnt=sc.nextInt();
			System.out.println("'"+data.get(i).getName()+"'을(를) "
							+cnt+"개 선택 하셨습니다. ");
			data.get(i).sell(cnt);
			flag=true;
			}
	}
	if(!flag) {
		System.out.println(num+"번은 없는 상품번호 입니다");
		continue;
	}
	break;
}

flag 는 보통 초기화 false로 함

					boolean flag = true; //초기화 false 로 하면
					for(int i=0;i<data.size();i++) {
						if(num == data.get(i).getNum()) {//이건 되고???
							System.out.println("구매 하실 개수를 입력 하세요 : ");
							cnt=sc.nextInt();
							System.out.println("'"+data.get(i).getName()+"'을(를) "
									+cnt+"개 선택 하셨습니다. ");
							data.get(i).sell(cnt);
							flag=true;
							break;
						} else flag = false; //필요 없음
						
					}
					if(!flag) {
						System.out.println(num+"번은 없는 상품번호 입니다");
						continue;
					}

이거 없으면 항상 false 가 됨

0~리스트길이 끝 까지 반복문으로 돌면서 다 검사하면 1개만 맞고 나머지는 다 틀리니까 else flag = false는 무조건 한번 나오게 됨

profile
이진 입니다

0개의 댓글

관련 채용 정보