배열에 있는 숫자들 중 해당 숫자가 몇번째인지 찾아보자.
나머지 사항은 기존 배열과 동일하다.
위의 순서를 잘 기억해야한다.
위 순서에서 1번(해당 숫자 유,무 판단)을 해결하기 위해 boolean이 사용된다.
boolean은 기본 초기값을 false로 잡는다.
주로 flag라는 표현을 사용하는데, 이해할 때 이렇게 이해하면 된다.
깃발을 내리고 있다가 값이 맞으면 깃발을 들어올려 맞다고 표현한다.
그래서 for문안에 보면 값이 맞을 시 flag(boolean)이 false=>true 로 변경된다.
그렇게 for문을 돌리고, for문에 해당 값이 없으면 for문을 빠져나와 !flag(flag==false)로 변경하고 출력을 해준다.
for문 안에 !flag가 있으면 i값의 반복 횟수만큼 !flag문이 출력되고, if(!flag)를 안하고 출력하면 무조건적으로 출력된다.,
// 숫자를 입력해서 그 숫자가 몇번째에 있는지 찾을것이다.
// 있는지 없는지 유,무 먼저 확인 후 있을 시 몇번째인지 찾아야 한다.
// 없으면 없다고, 있으면 그 숫자가 몇번째 있는지 찾기.
// 0입력시 종료: while(true)
Scanner sc=new Scanner(System.in);
int su; // 입력할 수
int[] data= {4,63,64,76,84,62,41,4324,3535,6757,2342,5262,57,2,5};
boolean flag;
while(true) {
System.out.println("검색할 숫자를 입력하세요.");
su=sc.nextInt();
if(su==0) {
System.out.println("종료합니다.");
break;
}
// 유,무에 대한 초기
flag=false; //초기값은 false로 주는것이 좋다. 찾으면 true로 변경할 것이다.
// class에서는 false, 0, null 등이 기본값이다.
// 값을 찾아보자.
for(int i=0;i<data.length;i++) {
if(su==data[i]) {
flag=true; // 찾았다 라는 의미
System.out.println((i+1)+"번째에서 검색 ");
}
}
if(!flag) // !flag와 동일한 말 flag==false
// 위에서 찾지 못했다면... 이라는 의미. 못찾으면 여전히 false이다.
System.out.println(su+"는 data에 없습니다.");
}
결과
검색할 숫자를 입력하세요.
3
3는 data에 없습니다.
검색할 숫자를 입력하세요.
2
14번째에서 검색
검색할 숫자를 입력하세요.
아래는 숫자가 아닌 한글로 할때의 코드이다.
위와 동일하지만 숫자를 한글로 바꾸면서 약간씩 달라진점이 있다.
참고하자.
public static void main(String[] args) {
// 이름을 입력해서 없으면 없다고, 있으면 몇번째 있는지 알려주세요~~
Scanner sc=new Scanner(System.in);
String[]stuNames= {"임형준","이민규","박병주","최성현","김영준","강연주","최진평","고은비","송주영"};
String name;
boolean flag; // ??????
while(true) {
System.out.println("이름을 입력하세요.");
name=sc.nextLine();
if(name.equals("끝")) {
System.out.println("종료되었습니다.");
break;
}
flag=false;
for(int i=0;i<stuNames.length;i++) {
if(name.equals(stuNames[i])) {
flag=true;
System.out.println((i+1)+"번째에 있습니다.");
}
}
if(!flag) {
System.out.println("없습니다.");
}
}