자바-8일차 이클립스

최성현·2023년 6월 26일
0

Java

목록 보기
12/46

배열 성씨 찾기+그 성씨 몇명 체크

String [] names= {"김선호","나나","이효리","엄정화","김완선","보아","유재석","하하","김연진","이진"};
		
		Scanner sc=new Scanner(System.in);
		
		int cnt;
		String search; //입력할 성씨
		boolean flag;
		
		while(true)
		{
			System.out.println("성을 입력해주세요(종료 입력시 종료)");
			search=sc.nextLine();
			
			if(search.equals("종료"))
			{
				System.out.println("종료합니다");
				break;
			}
			
			flag=false;
			
			cnt=0; //검색할때마다 초기화가 필요
			
			for(int i=0;i<names.length;i++)
			{
				if(names[i].startsWith(search))
				{
					cnt++;
					System.out.println(i+":"+names[i]);
					flag=true;
				}
			}
			
			if(flag) //flag==true
				System.out.println("\t총"+cnt+"명 검색");
			else //!flag
				System.out.println(search+"씨 성을 가진 사람은 없습니다");
			
		}

선택정렬/오름차순 정렬

=> 가장 작은 숫자를 앞으로 보내기

Arrays.sort(배열이름);

위 코드 풀어서 작성

int [] arr= {5,22,64,72,4,3,16,85,93,45};
					//i ={5,22,64,72,4,3,16,85,93} 기준 데이터는 길이-1 까지만 비교
					//j ={22,64,72,4,3,16,85,93,45}	비교 데이터는 2번째부터 마지막까지 비교
		
for(int i=0;i<arr.length-1;i++)
		{
			//비교하는 데이터는 기준값 다음부터 끝까지
			// j:비교하는 값이기에 i보다 하나 더 커야함
			for(int j=i+1;j<arr.length;j++)
			{
				if(arr[i]>arr[j])
				{
					int temp=arr[i];
					arr[i]=arr[j];
					arr[j]=temp;
				}
			}
		}

배열 순서바꾸기

for(int i=0;i<arr.length/2;i++)
		{
			int temp=arr[i];
			arr[i]=arr[arr.length-i-1]; // 0일때 9번과 바꾸고 //1일때 8과 바꾸고 .....
			arr[arr.length-i-1]=temp;
		}

중복처리 로직

int [] lotto= new int[6];
		
		for(int i=0;i<lotto.length;i++)
		{
			//1~45까지의 랜덤 수 발생
			lotto[i]=(int)(Math.random()*45)+1;
			
			//중복처리
			for(int j=0;j<i;j++) //비교값 반복문
			{
				if(lotto[i]==lotto[j])
				{
					i--; //같은 번지에 다시 값을 구하기 위해서
					break; //중복된다면 현재 중복문을 벗어나서 위 반복문으로 돌아가야함 // -> i++로 이동
						   //continue;라면 두번째 for문(j++)에서 반복되기 때문에 안된다
						   //여기서는 굳이 break 안해줘도 작동은 하지만 중복처리 로직에서는 일반적으로 break; 사용
				}
			}
			
		}

로또만들기

int [] arr= {5,22,64,72,4,3,16,85,93,45};
		
		//출력
		System.out.println("원래 데이터");
		
		for(int i=0;i<arr.length;i++)
		{
			System.out.print(arr[i]+" ");
		}
		System.out.println();
		
		
		
		//데이터 거꾸로 변경하기
		for(int i=0;i<arr.length/2;i++)
		{
			int temp=arr[i];
			arr[i]=arr[arr.length-i-1]; // 0일때 9번과 바꾸고 //1일때 8과 바꾸고 .....
			arr[arr.length-i-1]=temp;
		}
		
		//출력
		System.out.println("순서 바꾼 후 데이터");
				
		for(int i=0;i<arr.length;i++)
		{
			System.out.print(arr[i]+" ");
		}
		System.out.println();
		
		
		
		//selection sort(오름차순 정렬)
		//Arrays.sort(arr):배열 arr을 정렬한다
		//선택정렬: 가장 작은 숫자를 앞으로 보내자 -> 중첩for문
		//int [] arr= {5,22,64,72,4,3,16,85,93,45};
					//i ={5,22,64,72,4,3,16,85,93} 기준 데이터는 길이-1 까지만 비교
					//j ={22,64,72,4,3,16,85,93,45}	비교 데이터는 2번째부터 마지막까지 비교
		
		//기준데이터는 0부터 끝에서 두번째까지
		for(int i=0;i<arr.length-1;i++)
		{
			//비교하는 데이터는 기준값 다음부터 끝까지
			// j:비교하는 값이기에 i보다 하나 더 커야함
			for(int j=i+1;j<arr.length;j++)
			{
				if(arr[i]>arr[j])
				{
					int temp=arr[i];
					arr[i]=arr[j];
					arr[j]=temp;
				}
			}
		}
		
		System.out.println("오름차순 정렬 후 데이터");
		
		for(int i=0;i<arr.length;i++)
		{
			System.out.print(arr[i]+" ");
		}
		System.out.println();
	}

로또 오름차순 정렬

public static void main(String[] args) {

		int [] lotto= new int[6];
		
		for(int i=0;i<lotto.length;i++)
		{
			//1~45까지의 랜덤 수 발생
			lotto[i]=(int)(Math.random()*45)+1;
			
			//중복처리
			for(int j=0;j<i;j++) //비교값 반복문
			{
				if(lotto[i]==lotto[j])
				{
					i--; //같은 번지에 다시 값을 구하기 위해서
					break; //중복된다면 현재 중복문을 벗어나서 위 반복문으로 돌아가야함 // -> i++로 이동
						   //continue;라면 두번째 for문(j++)에서 반복되기 때문에 안된다
						   //여기서는 굳이 break 안해줘도 작동은 하지만 중복처리 로직에서는 일반적으로 break; 사용
				}
			}
			
		}
		
		//Arrays.sort(lotto);//오름차순 정렬
		System.out.println("오름차순 정렬");
		
		for(int i=0;i<lotto.length-1;i++)
		{
			for(int j=i+1;j<lotto.length;j++)
			{
				if(lotto[i]>lotto[j])
				{
					int temp=lotto[i];
					lotto[i]=lotto[j];
					lotto[j]=temp;
				}
			}
		}
		
		//출력
		for(int i=0;i<lotto.length;i++)
		{
			System.out.printf("%5d",lotto[i]);
		}
		System.out.println();
		
	}

로또 몇 장 구매하는지 로직

public static void main(String[] args) {
		// 몇 장 구입할건지 입력하여 여러개 출력
		
		Scanner sc=new Scanner(System.in);
		int guip; //몇 장,얼마 구일할지
		int [] lotto= new int[6];
		
		//System.out.println("로또 몇 장을 구입 할지 입력해주세요"); 횟수
		System.out.println("로또 얼마 구입 할지 입력해주세요"); //금액
		guip=sc.nextInt();
		
		
		//예외조항
		//if(guip<1) 횟수
		if(guip<1000) //금액
		{
			//System.out.println("***구입횟수가 부족합니다***"); 횟수
			System.out.println("***구입 금액이 부족합니다***"); //금액
			return; //메인함수 자체를 빠져나간다
		}
		
		//for(int n=0;n<guip;n++) { 횟수
		for(int n=0;n<guip/1000;n++) { //금액
			
			System.out.printf("%d회: ",n+1);
		
		for(int i=0;i<lotto.length;i++)
		{
			//1~45까지의 랜덤 수 발생
			lotto[i]=(int)(Math.random()*45)+1;
			
			//중복처리
			for(int j=0;j<i;j++) //비교값 반복문
			{
				if(lotto[i]==lotto[j])
				{
					i--; 
					break;
				}
			}
			
		}
		
		//Arrays.sort(lotto);//오름차순 정렬
		System.out.println("오름차순 정렬");
		
		for(int i=0;i<lotto.length-1;i++)
		{
			for(int j=i+1;j<lotto.length;j++)
			{
				if(lotto[i]>lotto[j])
				{
					int temp=lotto[i];
					lotto[i]=lotto[j];
					lotto[j]=temp;
				}
			}
		}
		
		//출력
		for(int i=0;i<lotto.length;i++)
		{
			System.out.printf("%5d",lotto[i]);
		}
		System.out.println();
		
		}//첫번째 for문 끝

	}

배열 숫자찾기

public static void main(String[] args) {
		
		/* 숫자를 입력 받아서 배열의 몇번째에 있는지 출력하고 없을 경우 없습니다 라고 출력
		 * (0이면 종료)
		 * 입력값: 11
		 * 		11은 2번째에 있어요!
		 * 입력값: 100
		 * 		100은 없습니다
		 * 입력값: 0
		 * 		종료합니다(프로그램종료)*/
		
		Scanner sc= new Scanner(System.in);
		
		int [] arrNums= {1,64,72,18,39,546,27,95,101,30,50};
		
		int num;
		boolean flag;
		
		while(true)
		{
			System.out.print("입력값: ");
			num=sc.nextInt();
			
			if(num==0)
			{
				System.out.println("\t종료합니다(프로그램종료)");
				break;
			}
			
			flag=false;
			
			for(int i=0;i<arrNums.length;i++)
			{
				if(num==arrNums[i])
				{
					flag=true;
					System.out.println("\t"+num+"은 "+(i+1)+"번째에 있어요!");
				}
			}
			
			if(!flag)
				System.out.println("\t"+num+"은 없습니다");
		}

	}
profile
백엔드 개발자로서 성장해 나가는 성현이의 블로그~

0개의 댓글