프로그래밍/Java

Java 3일차 - 구구단, 형변환, Calendar, Date, OverLoading, equals, try~catch 연습문제

비전공개미 2022. 9. 20. 18:11
반응형
SMALL
//Array.java
package net.bit.day20;

public class Array {
	public static void main(String[] args) {
//		int[] avg = new int[3];
//		int avg = 34; //변수의 초기화
//		int[] array = { 7, 8, 9 }; //배열의 초기화
//		System.out.println(avg[3]);
	}
}

 

//DateCal.java
package net.bit.day20;
import java.util.Date;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Random;
import java.util.random.*;

public class DateCal {
	public static void main(String[] args) {
		Date dt = new Date(); //맞음
	    //Calendar cal = new Calendar(); //오류
	    Calendar cal = Calendar.getInstance(); //맞음
	    Calendar gre = new GregorianCalendar(); //맞음
	    
	    Random r = new Random();
	    int su = r.nextInt(100);
	    System.out.println(su);
	    
	    double d = Math.random();
	    System.out.println(d);
	}
}

[출력]

49
0.45087805978912443

 

 

//Gugudan.java
package net.bit.day20;
import java.util.Scanner;

public class Gugudan {
	public static void main(String[] args) {
		//문제1 dan데이터값을 키보드에서 입력받기
		//문제2 input() 리턴값o, 매개인자x => Scanner클래스 입력만
		//문제3 output() 리턴값x, 매개인자o => for반복문으로 출력
		//문제4 main함수에서 input(), output() 호출
		Gugudan gu = new Gugudan();
		int numb = gu.input();
		gu.output(numb);
		
	}
	//int, String은 형에 맞게 return값을 반환해줘야 한다.
	public int input() {
		Scanner in = new Scanner(System.in);
		System.out.print("단을 입력해주세요 > ");
		int dan = in.nextInt();
		in.close();
		return dan;
	}
	//void는 return값을 반환하지 않는다.
	public void output(int num) {
		for (int i=1; i<10; i++) {
			System.out.println(num + "*" + i + "=" + (num*i));
		}
	}
}

[출력]

단을 입력해주세요 > 7
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

 

 

//Gugudan_teacher.java
package net.bit.day20;

import java.util.Scanner;

public class Gugudan_teacher {

	public static void main(String[] args) {
		Gugudan_teacher gg = new Gugudan_teacher();
		int ret = gg.input();
		gg.output(ret);
		
	}
	public int input() {
		Scanner sc = new Scanner(System.in);
		System.out.print("단 입력 > ");
		int dan = sc.nextInt();
		sc.close();
		return dan;
	}
	
	public void output(int dan) {
		for (int i=1; i<10; i++) {
			System.out.println(dan + "*" + i + "=" + (dan*i));
		}
	}

}

[출력]

단 입력 > 8
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

 

 

//Test01.java
package net.bit.day20;

public class Test01 {
	public static void main(String[] args) {
		double avg = 78.9;
		int a = (int)avg;
		
		//표준데이터타입 = 컴파일시 자동해석 = primitive type int
		//표준타입 int, double, float, boolean, char, byte 기본타입
		//포장클래스 Integer, Long, Double, Float, Boolean, Character, Byte
		//참조타입 - 클래스, interface 참조를 표준타입으로 변환할때 
		//wrapper class(포장클래스)를 사용해야 한다.
		String data = "78";
		int b = Integer.parseInt(data);
		double c = Double.parseDouble(data);
		
		System.out.println(data + 100.0); //78100.0
		System.out.println(b + 100); //178
		System.out.println(c + 100.0); //178.0

	}
}

[출력]

78100.0
178
178.0

 

 

//Test02.java
package net.bit.day20;

import java.util.Random;

public class Test02 {
	public static void main(String[] args) {
		Random r = new Random();
		for (int i=0; i<3; i++) {
			int num = r.nextInt(1,6); //1에서 6
			System.out.println(num);
		}
		
		double a = Math.random();
		double b = Math.random();
		double c = Math.random();
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
		
	}
}

[출력]

5
2
2
0.6036015180364369
0.11026450842748081
0.28971419229714146

 

 

//Test03.java
package net.bit.day20;

public class Test03 {
	public static void main(String[] args) {
		//String a = new String(); //명시적인 개체화=new키워드사용
		String a = new String("com");
		String b = "com"; //묵시적인 개체화=new키워드사용x
		
		//a와 b의 주소값이 같은지 확인
		if(a == b) {
			System.out.println("일치");
		}else {
			System.out.println("불일치");
		}
		
		//a와 b의 내용이 같은지 확인
		if(a.equals(b)) {
			System.out.println("같다");
		}else {
			System.out.println("다르다");
		}
		
		String c = "com"; //묵시적인 개체화
		String d = "com";
		if(c.equals(d)) { //변수의 내용확인
			System.out.println("같다");
		}else {
			System.out.println("다르다");
		}
		
		String e = new String("com"); //명시적인 개체화
		String f = new String("com");
		if(e == f) { //주소값확인
			System.out.println("같다");
		}else {
			System.out.println("다르다");
		}

	}
}

[출력]

불일치
같다
같다
다르다

 

 

//TestOverLoading.java
package net.bit.day20;

public class TestOverLoading {
	public static void main(String[] args) {
		cal();
		cal(1.5, 2, 3);
		cal(2.5, 3.0);
		cal("길동", "27");

	}
	
	//115페이지 함수이름 동일 OverLoading=오버로딩
	public static void cal() {
		System.out.println("cal함수");
	}
	public static void cal(double a, int b, int c) {
		System.out.println(a + b + c);
	}
	public static void cal(double a, double b) {
		System.out.println(a + b);
	}
	public static void cal(String msg, String age) {
		System.out.println(msg + "의 나이는 " + age);
	}
}

[출력]

cal함수
6.5
5.5
길동의 나이는 27

 

 

//Trycatch.java
package net.bit.day20;

public class Trycatch {

	public static void main(String[] args) {
		int[] array = {7, 8, 9};
		try {
			System.out.println(array[0]);
			System.out.println(array[1]);
			System.out.println(array[2]);
			System.out.println(array[3]); //<=에러발생 건너뛰고 내려간다
		}catch(Exception ex) {
//			System.err.println(ex); //에러출력
			System.out.println();
			System.out.println("우리");
			System.out.println("나라");
			System.out.println("만세");
			
		}

	}

}

[출력]

7
8
9

우리
나라
만세

 

 

//Trycatch2.java
package net.bit.day20;

public class Trycatch2 {

	public static void main(String[] args) {
		//int[] camp = new int[3]; //int타입 초기값 0
		//boolean[] camp = new boolean[3]; //boolean타입 초기값 false
		double[] camp = new double[3]; //double타입 초기값 0.0
		//String[] camp = new String[3]; //클래스타입 초기값 null
		//Gugudan[] camp = new Gugudan[3];
		
		try {
			System.out.println(camp[0]);
			System.out.println(camp[1]);
			System.out.println(camp[2]);
		}catch(Exception ex) {
			System.out.println("에러이유 : " + ex);
			System.out.println();
			System.out.println("우리");
			System.out.println("나라");
			System.out.println("만세");
		}
		
	}

}

[출력]

0.0
0.0
0.0

 

 

//Trycatch3.java
package net.bit.day20;

public class Trycatch3 {
	public static void main(String[] args) {
		//int[] array = { 7, 8, 9 };
		int[] camp= new int[3];  //int타입 초기값 0
		//boolean[] camp = new boolean[3];  //boolean타입 초기값 false
		//double[] camp = new double[3];  //double타입 초기값 0.0
		//String[] camp = new String[3];  //클래스타입 초기값 null
		camp[0]=77;
		camp[1]=88;
		camp[2]=99;
		
			System.out.println(camp[0]);
			System.out.println(camp[1]);
			System.out.println(camp[2]);
		
		System.out.println();
		System.out.println("우리나라");
		System.out.println("대한민국");
		System.out.println("화려강산");
	}
}

[출력]

77
88
99

우리나라
대한민국
화려강산

 

 

//Trycatch4
package net.bit.day20;

import java.util.Scanner;

public class Trycatch4 {
	public static void main(String[] args) {
		//3개의 값을 입력받고 출력 / 숫자가 아닐시 재시도
		Scanner sc = new Scanner(System.in);
		int[] camp = new int[3]; //int타입 초기값 0
		int i = 0;
			
		while(true) {
			try {
				System.out.print("camp["+ i +"]번째 배열값입력 > ");
//				camp[i] = sc.nextInt(); //문자나 소수점을 입력하면 무한루프가 돈다
				camp[i] = Integer.parseInt(sc.nextLine()); //권장
				i++;
				if(i == camp.length) {
					break;
				}
			}catch(Exception ex) {
				System.out.println("\n다시입력해주세요 > ");
				continue;
			}
		}
		
		
		for (int j=0; j<camp.length; j++) {
			System.out.println(camp[j]);
		}
//		
//		System.out.println();
//		System.out.println("우리");
//		System.out.println("나라");
//		System.out.println("만세");
		sc.close();
	}

}

[출력]

camp[0]번째 배열값입력 > 1
camp[1]번째 배열값입력 > a

다시입력해주세요 > 
camp[1]번째 배열값입력 > 2
camp[2]번째 배열값입력 > kim

다시입력해주세요 > 
camp[2]번째 배열값입력 > 3
1
2
3

 

 

//TestString.java
package net.bit.day20;
import java.util.Scanner;
import java.util.Calendar;

public class TestString {
	public static void main(String[] args) {
		while(true) {
			try {
				Scanner sc = new Scanner(System.in);
				Calendar cal = Calendar.getInstance();
				//현재년도 구하기
				int nowYear = cal.get(Calendar.YEAR);
				int nowYear1 = nowYear + 1;
				
				//주민번호 입력하기
				System.out.print("주민번호 입력 -포함 > ");
				//ex)841230-1790563
				String jumin = sc.nextLine();
				String[] jumins = jumin.split("-");
				String jumin1 = jumins[0];
				String jumin2 = jumins[1];
				
				//주민번호 앞두자리 추출
				String birth = jumin1.substring(0, 2);
				String birthMonth = jumin1.substring(2,4);
				String birthDay = jumin1.substring(4,6);
				//주민번호 뒤한자리 추출
				String gender1 = jumin2.substring(0, 1);
				int gender2 = Integer.parseInt(gender1); 
//				char gender1 = jumin2.charAt(0);
//				int gender2 = Character.getNumericValue(gender1); 
				String birthYear = "";
				String genders = "";
				int birthYear1 = 0;
				int birthage = 0;
		
				switch(gender2) {
				case 1:
					birthYear = "19" + birth;
					birthYear1 = Integer.parseInt(birthYear);
					birthage = nowYear1 - birthYear1;
					genders = "남자";
					break;
				case 2:
					birthYear = "19" + birth;
					birthYear1 = Integer.parseInt(birthYear);
					birthage = nowYear1 - birthYear1;
					genders = "여자";
					break;
				case 3:
					birthYear = "20" + birth;
					birthYear1 = Integer.parseInt(birthYear);
					birthage = nowYear1 - birthYear1;
					genders = "남자";
					break;
				case 4:
					birthYear = "20" + birth;
					birthYear1 = Integer.parseInt(birthYear);
					birthage = nowYear1 - birthYear1;
					genders = "여자";
					break;
				default:
					break;
				}
				System.out.println(birthYear + "년 " + birthMonth +"월 "+ birthDay+"일생,"+ " 나이는" + birthage + ", 성별은 " + genders + "입니다.");
				sc.close();
				break;
			}catch(Exception e) {
				System.out.println("형식에 맞게 입력해주세요.");
				continue;
			}
		}
		
		
	}
}

[출력]

주민번호 입력 -포함 > 8501011245789
형식에 맞게 입력해주세요.
주민번호 입력 -포함 > 850101-1245789
1985년 01월 01일생, 나이는38, 성별은 남자입니다.

(보완이 좀 더 필요함...)

반응형
LIST