java 숫자 위치 찾기

limchard·2023년 10월 26일
0

java

목록 보기
35/48

배열에 있는 숫자들 중 해당 숫자가 몇번째인지 찾아보자.
나머지 사항은 기존 배열과 동일하다.

  1. 배열에 해당 숫자가 있는지 확인한다.
  2. 배열에 해당 숫자가 있다면, 몇번째인지 확인한다.

위의 순서를 잘 기억해야한다.
위 순서에서 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("없습니다.");
		}
	}
profile
java를 잡아...... 하... 이게 맞나...

0개의 댓글