자바 학습 & 복습 6일차 - array 배열

728x90

연습문제들

 

import java.util.Scanner;

import javax.swing.plaf.basic.BasicGraphicsUtils;

public class Daily_Upload_TSTORY {
	public static void main(String[] args, char[] sum) {

        //연습문제들
		int x = 15;
		System.out.println(10<x&&x<20);
		
		char ch = ' ';
		System.out.println(ch==' '&&ch=='\t');
		
		String x2 = "X";
		System.out.println(x2.equalsIgnoreCase(x2));
		
		char ch2 = '8';
		System.out.println('0'<=ch2 && ch2<='9');
		
		int year = 84;
		System.out.println(year%400==0 || (year%4==0 &&!(year%100==0)));
	
		boolean powerOn = false;
		if(!(powerOn));
		
		String str = "yes";
		if(str.equals("yes"));
		
		//1-20 정수 중에 2, 3의 배수가 아닌 수의 총합 구하기
		int sum = 0;
		for(int num = 0; num<=20; num++) {	
			if((num%2!=0 && num%3!=0)) {
				sum+=num;
		}
			
		}
		System.out.println(sum);
		
		//1+(1+2)+(1+2+3)+...+(1+2+3+...+9+10) 총 합 구하기
		int sum2 = 0;
		for(int num = 1; num<=10; num++) {
			for(int n = 1; n<=num; n++) {
				sum2+=n;
				
			}
		}
		System.out.println(sum2);
		
		//1+(-2)+3+(-4)...+식으로 더했을때 몇까지 더해야 총합이 100이상이 되는지 구하기
		int sum4=0, num=0;
		while(true) {
			num++;
			if(num%2==0)
				sum4-=num;
			else
				sum4+=num;
			if(sum4>=100)
				break;
		}
		System.out.println(num);
        
        		//for문 while로 바꾸기
		for(int i = 0; i<=3; i++) {
			for(int j= 0; j <= i; j++)
				System.out.print("*");
				System.out.println("");
			}
		
		int s = 0, b = 0;
		while(s<=3) { //0으로 시작해서 조건이 true 이므로 두번째 조건식으로 넘어감

			while(b<=s) { // 0<=0 이므로 1번 실행
				System.out.print("*"); // *을 한번 찍고 
				b++; //b을 한번 더함으로써 조건이 만족하지 않으므로 종료
			}
		System.out.println(""); //후 띄어쓰기를 위해 반복문 마지막에 삽입
		s++;//1번째 조건을 만족시키기 위해 1+를 하여 3까지 반복
		b=0;//b를 계속 더하게 되면 s변수와 값이 동일해질수 밖에 없으므로 반복이 1번만 된다
		//따라서 0으로 초기화시켜줌으로써 1<=3 등으로 변수 실행 조건을 반복함
		}
		
		//두개 주사위를 던졌을 때 눈의 합이 6이 되는 모든 경우의 수 출력
		
		for(int a = 1; a<=6; a++) {
			for(int A = 1; A<=6; A++) {
				if(a+A == 6) {
					System.out.printf("주사위 합이 6이 되는 모든 경우의 수 %d+%d = %d",a,A,(a+A));
				}
			}
			System.out.println(""); //모든 반복문이 마무리 된 후에 띄어쓰기 용
		}
        
        		//문자열을 숫자로 바꾸어 계산
		String str = "12345";
		int sum = 0;
		int s = 0;

		for(int i = 0; i < str.length(); i++) {
			char ch = ' ';
			ch = str.charAt(i); // charAt()으로 한자리수 추출 ()안에는 추출할 순서번호 대입
			//sum = ch -'0'; // 두가지 방법으로 ch에서 숫자 추출가능
			//ch에서 '0' 제거
			sum = Character.getNumericValue(ch);
			//or Character.getNumericValue() 사용해서 숫자 추출
			s+=sum;
			System.out.println(s);
		}
        		
		//1부터 6사이의 임의 정수를 변수 value에 저장
		int value = (int)(Math.random()*5)+1;
		System.out.println("value: "+ value);
		
		// int type 12345를 활용해서 1+2+3+4+5 출력
		int num = 12345, sum = 0;
		while(num>0) {
			sum += num%10;
			num = Math.round(num/10);
			System.out.println("sum = "+sum);
        
	}
}

 

연습문제 마지막 하이라이트 (자체 양식)

import java.util.Scanner;

public class Daily_Tstory {

	public static void main(String[] args) {
		//1부터 100까지의 값을 랜덤으로 생성해서 사용자가 값을 입력하여 맞추는 게임
		int i = 0, j = 0, count = 0;
		i = (int)((Math.random()*99)+1);
		
		System.out.println("1부터 100까지 값 입력");
		
		Scanner scanner = new Scanner(System.in);
			
		while(j!=i) {
			String input = scanner.nextLine();
			j = Integer.parseInt(input);
			count++;
			System.out.println("다시 입력");
			if(j>i) {
				System.out.println("작은 수를 입력하세요");
			}
			else {
				System.out.println("큰 수를 입력하세요");
			}
		}
		System.out.println("정답입니다");
		System.out.println("시도하신 횟수는 "+count+"번 입니다.");
	}
}

일단 문제 지문만 보고 어떻게 하면 문제를 해결할 수 있을까 생각하고

직접 양식에 맞추지 않은 프로그래밍을 하였음

 

 

 

아래는 책에서 나온대로 do - while문에 맞춰서 문제를 해석한 모습이다.

연습문제 마지막 하이라이트 (주어진 양식)

import java.util.Scanner;

public class Daily_Tstory {

	public static void main(String[] args) {
		//1부터 100까지의 값을 랜덤으로 생성해서 사용자가 값을 입력하여 맞추는 게임
		int answer = (int)((Math.random()*99)+1);
		int input = 0;
		int count = 0;
		System.out.println("1-100숫자 입력");
		java.util.Scanner s = new java.util.Scanner(System.in);
	
	do {
		count++;
		
		String ss = s.nextLine();
		input = Integer.parseInt(ss);
		
		if(input>answer) {
			System.out.println("작은 수를 입력");
		}
		else if(input<answer) {
			System.out.println("큰 수를 입력");
		}
		else {
			break;
		}
	
	}
	while(true);
	
	System.out.println("정답입니다");
	System.out.println("시도한 횟수: "+ count);
	}
}

 

배열 개념, 생성, 길이 - array

public class Daily_Tstory {

	public static void main(String[] args) {
		//배열 array 개념
		int[] num; //int의 배열을 선언
		num = new int[5]; // 선언한 num int에 new int[5] 5개의 길이를 생성 (0,1,2,3,4)
		
		String[] str;
		str =new String[5];
		
		double d[];
		d = new double[5]; 
		
		short st[]; // 변수 이름 옆에 써도 무관, c언어와 비슷하게 작성된 모습
		st = new short[5];
		
		//나머지 변수들도 동일하게 생성
		//array [] 를 생성할때는 동일한 변수로만 생성 가능
		//생성된 길이는 변수이름이 적혀져 있지 않음으로
		
		str[0]="array"; // 로 지정된 길이안에 값을 설정한 후
		String test = str[0]; //다른 변수에 넣어서 출력도 가능하고 이 자체로도 출력 가능
		System.out.println(test);
		
//		char[] ch = new char [5]; // 배열의 선언과 길이 생성을 동시 가능
//		ch[0]='a';
//		for(int i = 0; i < ch.length; i++) {
//			System.out.println("ch["+i+"] = "+ch[i]);
//		}
		
//		배열의 길이
//		.length로 표현가능
//		배열을 한번 실행하면 그 길이를 바꿀 수 없음
		System.out.println(ch.length + 3); // = 8
		
		//배열의 초기화 & 업데이트
		char ch[] = {'q','w','e','r','t'}; //{}를 사용하여 새로 지정
		char ch[] = new char {'q','w','e','r','t'}; //로 new char은 생략 가능
		System.out.println(ch[1]);
		
		
	}
}

 

배열 출력, 값의 자리 바꾸기

값 바꾸기를 활용하여 복권 만들기 예시문제

import java.util.Arrays;

public class Daily_Tstory {

	public static void main(String[] args) {
	//배열 출력
		int[] i = new int[3]; //따로 길이 지정을 할 수 있지만
		int[] j = {0,1,2,3,4,5}; //로 값까지 지정해버리면 배열이 값의 개수에 맞춰 자동생성됨
		System.out.println(j.length);
		for(int a=0; a<j.length; a++) {
			System.out.println("j:" + j[a]);
		}
		System.out.println(j); // 배열 변수 자체를 출력하는 것은 불가
		char[] ch = {'a','b','c'};
		System.out.println(ch); // char 타입은 예외적으로 가능
		String[] str = {"t","e","s","t"};
		System.out.println(Arrays.toString(str));
		//바로 출력이 안될때에는 Arrays라는 method를 import 시키고 Arrays.toString method를 사용하여 출력
		//Arrays.toString은 타입을 String 으로 바꿔줌
		System.out.println(Arrays.toString(j));
		
		//배열의 총 합과 평균 구하기 예시문제
		int sum = 0;
		float average = 0f;
		
		int[] s = {100,90,70,87,74};
		for(int i = 0; i<s.length; i++) {
			sum+=s[i];
		}
		average = (float)sum/s.length;
		System.out.println(sum);
		System.out.println(average);
		
		//배열의 최댓값과 최소값을 알아내기 예시문제
		int[] score = {50,60,30,90,70};
		
		int max = score[0]; //일단 배열의 0번째로 최대값을 재설정해야함
		int min = score[0]; //일단 배열의 0번째로 최소값을 재설정해야함
		
		for(int i = 1; i<score.length; i++) {
			if(score[i]>max) {
				max = score[i];
				}
				else if(score[i]<min){	
					min=score[i];
				}
			}
		System.out.println("max= " + max);
		System.out.println("min = " + min);
		
		//배열활용하여 숫자 섞기
		int[] random = {0,1,2,3,4,5,6,7,8,9};
		System.out.println(random[0]);
		
		for(int i = 0; i <= 100; i++) {
			int j = (int)(Math.random()*random.length);
			int tem = random[0]; //random[0]을 임시 변수 tem 으로 저장
			random[0] = random[j]; //random배열의 0번째 값을 랜덤 배열로 교체
			random[j] = tem; //랜덤배열위치에 미리 저장해놓은 0번째 값을 대입
			//정리:
			//0번째 위치에 다른 배열위치 함수 삽입
			//다른 위치에는 저장해놓았던 0번째 함수를(tem) 다른 위치에 삽입
			//이 과정이 100번 반복되면서 배열간의 값이 중복없이 섞임.
			//0번째의 값이 계속 같은 배열내의 값으로 반복되므로 중복이 없음
			
		}
		System.out.println(Arrays.toString(random));

		//로또번호(1-45)을 무작위로 선정하여 6개의 숫자를 추출
		
		int[] rotto = new int [45];
				
		for(int i = 0; i < 45; i++) {
			rotto[i] = i+1;
		}
		for(int j = 0; j < 6; j++) {//굳이 100번이나 섞을 필요 없고 찾을자리 6개만 섞어주면됨
			int r = (int)(Math.random()*45);
			
			int tem = rotto[0];
			rotto[j] = rotto[r];
			rotto[r] = tem;
			
		}
		for(int k = 0; k<6; k++) {
			System.out.println("Lottery N: "+rotto[k]);
		}
	}
}

 

커맨드라인 매개변수 입력

import java.util.Arrays;

public class Daily_Tstory {

	public static void main(String[] args) {
		//string 함수: substring(0,0) & charAt
		String str = "Hello Wold";
		
		String tem = str.substring(0,5);
		System.out.println(tem); //substring은 하나만 출력하는 charAt과 다르게 범위 지정하여 출력 가능
		
		char ch = str.charAt(6);
		System.out.println(ch); //charAt은 지정 장소의 한가지 문자열만 출력 가능
		
		//커맨드 라인을 통해 입력받기
		
		//본래는 Scanner method를 통해 input.nextLine()으로 사용자한테 문자열을 입력받지만
		//이 커맨드 라인을 활용해서 /s 공백문자로 구분해서 여러가지 문자열을 입력받기 가능
		for(int i=0; i<args.length; i++) {
			System.out.println("시스템 파일: "+args[i]);
		}
		
		//Run - run configuration - arguments - program arguments 에서 매개변수(args) 에 직접
		//지정할 수 있고 공백으로 구분된 모든 매개변수들은 String으로만 저장된다.
		//입력하지 않고 출력하면 크기가 0인 배열 생성가능
	
		//추가 팁:
		//윈도우 cmd로 자바 파일 실행하기
		//alt+enter로 현재 class 위치 확인 > project 폴더로 가서 bin 파일 경로 디렉토리 카피
		//>그 후 cmd 실행하여 cd C:\Users\gram\eclipse-workspace\New22.1.8\bin (예시) 실행
		//>그럼 bin경로로 가져있을텐데 dir 입력하여 파일목록 확인 > java Daily_Tstory(class 이름) 실행하면 설정한 시스템 매개변수 실행됨
		//윈도우 자체에서 매개변수를 추가할수 도있는데 동일하게 java Daily_Tstory(class 이름) aa bb cc(추가할 시스템 매개변수) 입력하면 넣어짐
		
		
		//커맨드에서 cd..을 실행하여 다시 클래스파일로 돌아가서 .java파일이 들어있는 클래스폴더로 이동한 후에
		//type Daily_Tstory.java(예시)를 실행하여 eclips를 키지않고 커맨드에서 실행가능
		//따라서 프로그램에서 매개변수를 이용한 조건문이나 프로그램이 있다면 따로 고칠필요 없이 커맨드에서 변경 가능
	}
}

위의 같은 커맨드예시는 조건문이나 프로그램에서 매개변수(args)를 사용할 때 따로

eclips를 들어가지 않고 commend center 내에서 변경할 수 있는 팁

 

 

 

 

728x90