객체지향프로그래밍 실습 코드 3강

yiseonline·2023년 9월 21일
0

java

목록 보기
2/3
post-thumbnail
package practice;
import java.util.Scanner;

public class practice {
	public static void main(String[] args) {
		int sum =0;
		for (int i = 1; i<=10; i++)
		{
			sum +=i;
			System.out.print(i);

			if(i<=9)
			{
				System.out.print("+");
			}
			else
			{
				System.out.print("="+sum);
			}
		}
	}
}

output

1+2+3+4+5+6+7+8+9+10=55
package practice;
import java.util.Scanner;

public class practice {
	public static void main(String[] args)
	{
		int count = 0, sum = 0;
		Scanner scanner = new Scanner(System.in);
		System.out.println("정수를 입력하고 마지막에 -1을 입력하세요");
		
		int n = scanner.nextInt();
		while(n!=-1)
		{
			sum+=n;
			count++;
			n=scanner.nextInt();
		}
		
		if(count==0) {
			System.out.println("입력된 수가 없습니다.");
		}
		else {
			System.out.print("정수의 개수는 "+count+"개이며 ");
			System.out.println("평균은 "+ (double)sum/count +"입니다");
		}
		scanner.close();
	}
}

output

정수를 입력하고 마지막에 -1을 입력하세요

1
2
3
4
5
-1
정수의 개수는 5개이며 평균은 3.0입니다
package practice;
import java.util.Scanner;

public class practice {
	public static void main(String[] args)
	{
		char c = 'a';
		
		do {
			System.out.print(c+" ");
			c = (char)(c+1);
		} while (c <='z');
	}
}

output

a b c d e f g h i j k l m n o p q r s t u v w x y z 
package practice;
import java.util.Scanner;

public class practice {
	public static void main(String[] args)
	{
		for (int i=1; i<10; i++)
		{
			for (int j = 1; j<10; j++)
			{
				System.out.print(i + "*" + j + "=" + i*j);
				System.out.print('\t');
			}
			System.out.println();
		}
	}
}

output

1*1=1	1*2=2	1*3=3	1*4=4	1*5=5	1*6=6	1*7=7	1*8=8	1*9=9	
2*1=2	2*2=4	2*3=6	2*4=8	2*5=10	2*6=12	2*7=14	2*8=16	2*9=18	
3*1=3	3*2=6	3*3=9	3*4=12	3*5=15	3*6=18	3*7=21	3*8=24	3*9=27	
4*1=4	4*2=8	4*3=12	4*4=16	4*5=20	4*6=24	4*7=28	4*8=32	4*9=36	
5*1=5	5*2=10	5*3=15	5*4=20	5*5=25	5*6=30	5*7=35	5*8=40	5*9=45	
6*1=6	6*2=12	6*3=18	6*4=24	6*5=30	6*6=36	6*7=42	6*8=48	6*9=54	
7*1=7	7*2=14	7*3=21	7*4=28	7*5=35	7*6=42	7*7=49	7*8=56	7*9=63	
8*1=8	8*2=16	8*3=24	8*4=32	8*5=40	8*6=48	8*7=56	8*8=64	8*9=72	
9*1=9	9*2=18	9*3=27	9*4=36	9*5=45	9*6=54	9*7=63	9*8=72	9*9=81
package practice;
import java.util.Scanner;

public class practice {
	public static void main(String[] args)
	{
		for (int i=1; i<10; i++)
		{
			for(int j = 1; j<10; j++)
			{
				System.out.print(j + "*" + i + "=" + i*j);
				System.out.print('\t');
			}
			System.out.println();
		}
	}
}

output

1*1=1	2*1=2	3*1=3	4*1=4	5*1=5	6*1=6	7*1=7	8*1=8	9*1=9	
1*2=2	2*2=4	3*2=6	4*2=8	5*2=10	6*2=12	7*2=14	8*2=16	9*2=18	
1*3=3	2*3=6	3*3=9	4*3=12	5*3=15	6*3=18	7*3=21	8*3=24	9*3=27	
1*4=4	2*4=8	3*4=12	4*4=16	5*4=20	6*4=24	7*4=28	8*4=32	9*4=36	
1*5=5	2*5=10	3*5=15	4*5=20	5*5=25	6*5=30	7*5=35	8*5=40	9*5=45	
1*6=6	2*6=12	3*6=18	4*6=24	5*6=30	6*6=36	7*6=42	8*6=48	9*6=54	
1*7=7	2*7=14	3*7=21	4*7=28	5*7=35	6*7=42	7*7=49	8*7=56	9*7=63	
1*8=8	2*8=16	3*8=24	4*8=32	5*8=40	6*8=48	7*8=56	8*8=64	9*8=72	
1*9=9	2*9=18	3*9=27	4*9=36	5*9=45	6*9=54	7*9=63	8*9=72	9*9=81
package practice;
import java.util.Scanner;

public class practice {
	public static void main(String[] args)
	{
		Scanner scanner = new Scanner(System.in);
		int sum = 0;
		for(int i= 0; i<5; i++)
		{
			System.out.print("정수 " + (i+1) + " 입력 : ");
			int n = scanner.nextInt();
			
			if(n<0)
				continue;
			else
				sum+=n;
		}
		System.out.println("양수의 합은 " + sum);
		scanner.close();
	}
}

output

정수 1 입력 : 10
정수 2 입력 : -10
정수 3 입력 : 20
정수 4 입력 : 0
정수 5 입력 : 30
양수의 합은 60
package practice;
import java.util.Scanner;

public class practice {
	public static void main(String[] args)
	{
		Scanner scanner = new Scanner(System.in);
		
		System.out.println("exit을 입력하면 종료됩니다.");
		while(true)
		{
			System.out.print(">>");
			String text = scanner.nextLine();
			if(text.equals("exit"))
				break;
		}
		System.out.println("종료합니다...");
		scanner.close();
	}
}

output

exit을 입력하면 종료됩니다.
>>edit
>>exxit
>>exit
종료합니다...
package practice;
import java.util.Scanner;

public class practice {
	public static void main(String[] args)
	{
		final int num_primes = 50;
		final int line_num = 10;
		int count = 0, num = 2; // count = 현재까지 찾은 소수 개수 저장, num = 소수 후보
		while(count < num_primes)
		{
			boolean isPrime = true; // num이 소수인지를 나타내는 불리언 변수
			for(int divisor=2; divisor<=num/2; divisor++) // num을 2부터 num/2까지 숫자로 나눠서 소수여부 확인
			{
				if(num%divisor==0) //소수가 아닌 경우
				{
					isPrime = false;
					break;
				}
			}
			if(isPrime) //소수인 경우
			{
				count++;
				if(count%line_num == 0) // 배수면 num 출력
					System.out.println(num);
				else // 아니면 탭문자 출력
					System.out.print(num+"\t");
			}
			num++; // 변수 1 증가시켜서 다음 소수후보 확인
		}
	}
}

output

2	3	5	7	11	13	17	19	23	29
31	37	41	43	47	53	59	61	67	71
73	79	83	89	97	101	103	107	109	113
127	131	137	139	149	151	157	163	167	173
179	181	191	193	197	199	211	223	227	229
package practice;
import java.util.Scanner;

public class practice {
	public static void main(String[] args) {
		int i = 5;
		int j = 2;
		int k = max(i,j);
		System.out.println(i+"와 "+j+"의 큰 값은 "+k);
	}
	
	public static int max(int n1, int n2) {
		if(n1>n2) 
			return n1;
		else
			return n2;
	}
}

output

52의 큰 값은 5
package practice;
import java.util.Scanner;

public class practice {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int intArray[] = new int[5];
		int max = 0;
		System.out.println("양수 5개를 입력하세요.");
		
		for (int i=0; i<5; i++) {
			intArray[i] = scanner.nextInt();
			if(intArray[i] > max) 
				max = intArray[i];
		}
		System.out.print("가장 큰 수는 " + max + "입니다.");
		scanner.close();
	}
}

output

양수 5개를 입력하세요.
50
20
90
33
66
가장 큰 수는 90입니다.
package practice;
import java.util.Scanner;

public class practice {
	public static void main(String[] args) {
		int intArray[] = new int[5];
		int sum=0;
		Scanner scanner = new Scanner(System.in);
		System.out.print(intArray.length + "개의 정수를 입력하세요 >> ");
		for (int i = 0; i<intArray.length; i++) {
			intArray[i] = scanner.nextInt();
			sum += intArray[i];
		}
		System.out.print("평균은 " + (double)sum/intArray.length);
		scanner.close();
	}
}

output

5개의 정수를 입력하세요 >> 7 10 32 9 20
평균은 15.6
package practice;
import java.util.Scanner;

public class practice {
	enum Week {sun, mon, tue, wed, thu, fri, sat}
	
	public static void main(String[] args) {
		Week day = Week.sun;
		System.out.println(day);
		
		Week[] days = Week.values();
		for(int i= 0; i<days.length; i++)
		{
			System.out.print(days[i] + "  ");
		}
		System.out.println();
		
		for(Week k : Week.values())
		{
			System.out.print(k + "  ");
		}
		System.out.println();
	}
}

output

sun
sun  mon  tue  wed  thu  fri  sat  
sun  mon  tue  wed  thu  fri  sat  
package practice;
import java.util.Scanner;

public class practice {
	enum Week {sun, mon, tue, wed, thu, fri, sat}
	
	public static void main(String[] args) {
		int[]n = {1,2,3,4,5};
		String names[] = {"사과","배","바나나","체리","딸기","포도"};
		
		int sum = 0;
		
		for(int k : n) {
			System.out.print(k + " ");
			sum+=k;
		}
		System.out.println("합은 " + sum);
		
		for(String s : names) {
			System.out.print(s + " ");
		}
		System.out.println();
		
		for(Week day : Week.values())
			System.out.print(day + "요일 ");
		System.out.println();
	}
}

output

1 2 3 4 5 합은 15
사과 배 바나나 체리 딸기 포도 
sun요일 mon요일 tue요일 wed요일 thu요일 fri요일 sat요일 
package practice;
import java.util.Scanner;

public class practice {
	public static void main(String[] args) {
		double score[][] = {
				{3.3, 3.4},
				{3.5, 3.6},
				{3.7, 4.0},
				{4.1, 4.2}};
		
		double sum = 0;
		
		for(int year = 0; year<score.length; year++)
			for(int term = 0; term<score[year].length; term++)
				sum += score[year][term];
		
		int n = score.length;
		int m = score[0].length;
		System.out.println("4년 전체 평점 평균은 "+sum/(n*m));
		}
}

output

4년 전체 평점 평균은 3.725
package practice;

public class practice {
	public static void main(String[] args) {
		int intArray[][] = new int[4][];
		intArray[0] = new int[3];
		intArray[1] = new int[2];
		intArray[2] = new int[3];
		intArray[3] = new int[2];
		
		for(int i = 0; i<intArray.length; i++)
			for(int j = 0; j<intArray[i].length; j++)
				intArray[i][j] = (i+1)*10 + j;
		
		for(int i = 0; i<intArray.length; i++) {
			for(int j = 0; j<intArray[i].length; j++)
				System.out.print(intArray[i][j] + " ");
			System.out.println();
		}
	}	
}

output

10 11 12 
20 21 
30 31 32 
40 41 
package practice;

public class practice {
	
	public static void printArray(int[] arr) {
		for(int i=0; i<arr.length; i++)
			System.out.print(arr[i]+"  ");
		System.out.println();
	}
	
	public static void main(String[] args) {
		int[]list = {3,1,2,6,4,2};
		printArray(list);
		printArray(new int[] {4,5,6,7,8,9});
	}	
}

output

3  1  2  6  4  2  
4  5  6  7  8  9  
package practice;

public class practice {
	
	public static void increase(int num, int[]arr) {
		num++;
		for(int i=0; i<arr.length; i++)
			arr[i]++;
	}
	
	public static void main(String[] args) {
		int[]list = {1,2,3,4,5};
		int number = 100;
		
		System.out.println("함수 실행전 ");
		System.out.println(number);
		for(int i = 0; i<list.length; i++)
			System.out.print(list[i] + " ");
		System.out.println();
		
		increase(number,list);
		
		System.out.println("함수 실행후");
		System.out.println(number);
		for(int i=0; i<list.length; i++)
			System.out.print(list[i] + " ");
		System.out.println();
	}
}

output

함수 실행전 
100
1 2 3 4 5 
함수 실행후
100
2 3 4 5 6 
package practice;

public class practice {
	public static double searchMax(double...nums) {
		if(nums.length ==0)
			return 0;
		double result = nums[0];
		
		for(int i = 1; i<nums.length; i++)
			if(nums[i]>result)
				result = nums[i];
		return result;
	}
	
	public static void main(String[] args) {
		double max;
		max = searchMax();
		System.out.println("{ }의 max : " + max);
		max = searchMax(10.2, 20.45, 9.54, 3.6);
		System.out.println("{10.2, 20.45, 9.54, 3.6}의 max : " + max);
		max = searchMax(new double[] {1,2,3});
		System.out.println("{1,2,3}의 max : " + max);
		
		double[] in = {5,2,9,2,1,4};
		max = searchMax(in);
		System.out.println("{5,2,9,2,1,4}의 max : " + max);
	}
}

output

{ }의 max : 0.0
{10.2, 20.45, 9.54, 3.6}의 max : 20.45
{1,2,3}의 max : 3.0
{5,2,9,2,1,4}의 max : 9.0
package practice;

import java.util.Scanner;

public class practice {
	
	public static int[] makeArray() {
		int temp[] = new int[4];
		for(int i=0; i<temp.length;i++)
			temp[i]=i;
		return temp;
	}

    public static void main(String[] args) {
    	int[] list;
    	list = makeArray();
    	
    	for(int i=0;i<list.length;i++)
    		System.out.print(list[i] + " ");
    	System.out.println();
    }
}

output

0 1 2 3 
  • 배열의 가장 큰 값이 2개 이상일 때 첫 번째 인덱스 찾기
double max = myList[0];
int indexOfMax = 0;
for(int i=1; i<myList.length; i++)
	if(myList[i] > max) {
		max = myList[i];
        indexOfMax = i;
    }
  • 배열 원소 이동
double temp = myList[0];
for(int i=1; i<myList.length; i++)
	myList[i-1] = myList[i];
myList[myList.length-1] = temp;
package practice;

import java.util.Scanner;

public class practice {
    public static void main(String[] args) {
    	double sum = 0.0;
    	double temp;
    	
    	for(int i=0; i<args.length; i++) { // 인자 개수 만큼 반복
    		temp = Double.parseDouble(args[i]); //문자열을 실수 타입으로 변환하여 환산
    		sum+=temp;
    		System.out.print(temp);
    		
    		if(i<args.length-1)
    			System.out.print(" + ");
    	}
    	System.out.println(" = " + sum);
    }
}

output

3.45 + 1.9 = 5.35
package practice;

import java.util.Scanner;

public class practice {
    public static void main(String[] args) {
    	Scanner scanner = new Scanner(System.in);
    	int dividend;
    	int divisor;
    	
    	System.out.print("나뉨수를 입력하시오 : ");
    	dividend = scanner.nextInt();
    	
    	System.out.print("나눗수를 입력하시오 : ");
    	divisor = scanner.nextInt();
    	
    	System.out.println(dividend + "을 " + divisor + "로 나누면 몫은 " + dividend/divisor + " 입니다.");
    	scanner.close();
    }
}

output

나뉨수를 입력하시오 : 10
나눗수를 입력하시오 : 0
Exception in thread "main" java.lang.ArithmeticException: / by zero
	at practice.practice.main(practice.java:17)


나뉨수를 입력하시오 : 9
나눗수를 입력하시오 : 3
93로 나누면 몫은 3 입니다.
package practice;

import java.util.Scanner;

public class practice {
    public static void main(String[] args) {
    	Scanner scanner = new Scanner(System.in);
    	int dividend, divisor;
    	
    	while(true) {
    		System.out.print("나뉨수를 입력하시오 : ");
    		dividend = scanner.nextInt();
    		
    		System.out.print("나눗수를 입력하시오 : ");
    		divisor = scanner.nextInt();
    		
    		try {
    			System.out.println(dividend + "를 " + divisor + "로 나누면 몫은 " + dividend/divisor + " 입니다");
    			break;
    		} catch(ArithmeticException e) {
    			System.out.println("0으로 나눌 수 없습니다. 다시 입력하세요.");
    		}
    		
    	}
    	scanner.close();
    }
}

output

나뉨수를 입력하시오 : 10
나눗수를 입력하시오 : 0
0으로 나눌 수 없습니다. 다시 입력하세요.
나뉨수를 입력하시오 : 10
나눗수를 입력하시오 : 5
105로 나누면 몫은 2 입니다
package practice;

import java.util.Scanner;

public class practice {
	public static void main(String[] args) {
		int[] intArray = new int[5];
		intArray[0] = 0;
		try {
			for(int i=0; i<5; i++) {
				intArray[i+1] = i+1 + intArray[i];
				System.out.println("intArray[" + i + "]" + "=" + intArray[i]);
				}
		} catch(ArrayIndexOutOfBoundsException e) {
			System.out.println("배열의 인덱스가 범위를 벗어났습니다.");
		}
	}
}

output

intArray[0]=0
intArray[1]=1
intArray[2]=3
intArray[3]=6
배열의 인덱스가 범위를 벗어났습니다.
package practice;

import java.util.Scanner;

public class practice {
	public static void main(String[] args) {
		String[] stringNumber = {"23", "12", "3.141592","998"};
		
		int i=0;
		try {
			for(i=0; i<stringNumber.length; i++) {
				int j=Integer.parseInt(stringNumber[i]);
				System.out.println("숫자로 변환된 값은 " + j);
			}
		}
		catch (NumberFormatException e) {
			System.out.println(stringNumber[i] + "는 정수로 변환할 수 없습니다.");
		}
	}
}

output

숫자로 변환된 값은 23
숫자로 변환된 값은 12
3.141592는 정수로 변환할 수 없습니다.

ㄴ 궁금한 점 : 그럼 998은 어디감?

과제 코드

1)

package practice;

public class practice {
	public static void main(String[] args) {
		int arr[][] = new int[4][];
		arr[0] = new int[5];
		arr[1] = new int[5];
		arr[2] = new int[5];
		arr[3] = new int[5];
		int sum[] = new int [3];
		int sum2[] = new int [4];
		
        // 배열에 원소 채워넣기
		for(int i=0; i<3; i++)
		{
			for(int j=0; j<4; j++)
			{
				arr[i][j] = (i+1)*10 + j;
			}
		}
		
        // 행 원소 계산
		for (int i=0; i<3; i++)
		{
			for(int j =0; j<4; j++)
			{
				sum[i]+=arr[i][j];
			}
			arr[i][4] = sum[i];
		}
		
        // 열 원소 계산
		for(int i=0; i<4; i++)
		{
			for(int j=0; j<4; j++)
			{
				sum2[i] += arr[j][i];
			}
			arr[3][i] = sum2[i];
		}
		
		//print
		for(int i=0; i<4; i++)
		{
			for(int j=0; j<5; j++)
			{
				System.out.print(arr[i][j] + " ");
			}
			System.out.println();
		}
				
		
	}
}

output

10 11 12 13 46 
20 21 22 23 86 
30 31 32 33 126 
60 63 66 69 0 

2)

package practice;

import java.util.Scanner;

public class practice {
    // 100나오면 간격이 안맞아용 %4d or '%3d '
    // 함수 만들기
    // 100초과, 0이하면 ... 더보기

    // 함수: 배열에 중복된 숫자가 있는지 확인
    public static boolean hasDuplicate(int[] arr, int num) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == num) {
                return true; // 중복된 숫자가 있을 경우 true 반환
            }
        }
        return false; // 중복된 숫자가 없을 경우 false 반환
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int arr[];
        int num;

        do {
            System.out.print("정수 개수 입력 : ");
            num = sc.nextInt();
            if (num < 1 || num > 100) {
                System.out.println("1부터 100까지 범위의 정수를 입력해주세요.\n");
            }
        } while (num < 1 || num > 100);

        arr = new int[num];
        for (int i = 0; i < arr.length; i++) {
            int tmp;
            int chk = 0;
            do {
                tmp = (int) (Math.random() * 100 + 1);
                // 배열 arr에 중복된 숫자가 있는지 확인
                if (!hasDuplicate(arr, tmp)) {
                    chk = 1; // 중복이 아니라면 체크를 1로 설정
                    arr[i] = tmp; // 배열에 값을 저장
                }
            } while (chk != 1); // 중복된 숫자가 발견될 때까지 반복
        }

        for (int i = 0; i < arr.length; i++) {
            if (i % 10 == 0 && i != 0)
                System.out.println();
            System.out.printf("%3d ", arr[i]);
        }
        sc.close();
    }
}

output

정수 개수 입력 : 24
 55  45  11  59  82   2  33  78   1  95 
 57  79  63  20  26  72  61  70  97  66 
 71  34   7  67 

0개의 댓글