import java.util.Random;
import java.util.Scanner;
public class Test02 {
public static void main(String[] args) {
Random rand=new Random();
Scanner sc = new Scanner(System.in);
int N=2; // 상품이 2개란 뜻
String[] mName=new String[N]; // 메뉴이름 배열
// for(int i=0;i<mName.length;i++) {
int index=0;
while(true) {
if(index==N) { //전부 완성하면 멈춰
break;
}
System.out.print((index+1)+"번 상품이름 입력: ");
mName[index]=sc.nextLine(); // 문자열 입력
System.out.println(mName[index]+" 이(가) 맞나요?");
System.out.println("1-YES, 2-NO : ");
int ans=sc.nextInt();
sc.nextLine(); // 버퍼에 남아있는 쓸데없는값들을 치워주는 코드
if(ans!=1) {//Y라고 대답하지 않으면,
System.out.println("다시 입력해주세요!");
continue;
}
System.out.println();
index++;
}
nextLine();은 모든 공백(space, enter)값을 가져감
이렇게 스페이스바 입력 가능
next();는 모든 공백을 안가져감 받아오지 않음
아이스(띄고)아메리카노 입력시 오류 :
InputMismatchException
입력된값이 문자열이 아니라고 인식
인지해야 하는 부분:
.nextLine(); 을 쓸 경우
sc.nextLine(); // 버퍼에 남아있는 쓸데없는값들을 치워주는 코드
이렇게 한번 버퍼에 남아있는 공백값을 없애줘야 함
그렇게 하지 않을 경우 에러 발생:
메모리 공간에서 integer에 enter값을 받지 못함 :
ans = 1 저장 후
버퍼공간에 남아있는 enter 값을 뒤늦게 남아있네 내건가 하고 가져옴
나는 enter입력 하지 않았는데 입력 한 것이 됨
그니까 기억할것 :
sc.nextLine(); // 버퍼에 남아있는 쓸데없는값들을 치워주는 코드
이거 한번 더 써줘라
애초에 nextLine()이 공백도 가져오고 편함