남극
기초부터 다시 본문
swing을 하던 도중에 에러가 나고 듣던 강의하시는 분에게 문의를 하여 해결을 하려 했지만 해결이 안 되어서
자바를 기초부터 놓친것이 있나 다시 하나하나하고 있어요
아주 기초적인 부분은 건너뛰었지만 세세한 부분을 파고들다 보니 조금 더 자세한 부분을 알게 되어서 좋은 것 같아요
그냥 항상쓰던 부분들에 대해서도 기초적인 원리에 대하여 궁금증이 있었는데 그것을 알아가다 보니 어떤 식으로 하면 더 좋은 소스가 나올까 하는 고민이 더 커지게 되었네요
아직은 1학년이어서 대회경험을 직접 해보지는 못했지만 정말 열심히 해서 2학년 때 매달을 따고 싶어요 ㅎ..
그래서 오늘은 이번주 월, 화, 수에 풀었던 기초 알고리즘에 대하여 써보려고 해요
우선 첫번째는 형변한입니다
int 1개와 float 2개를 받아 정수로 출력하는 것이에요
소스
package assignment1;
import java.util.Scanner;
public class MainClass {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
float b = sc.nextFloat();
float c = sc.nextFloat();
float result = (float)a+b+c;
System.out.println((int)result);
}
}
두 번째는
package assignment2;
import java.util.Scanner;
public class MainClass {
final static char[] mo = { 0x3131, 0x3132, 0x3134, 0x3137, 0x3138, 0x3139, 0x3141, 0x3142, 0x3143, 0x3145, 0x3146, 0x3147, 0x3148, 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e };
final static char[] ja= { 0x314f, 0x3150, 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, 0x3157, 0x3158, 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e, 0x315f, 0x3160, 0x3161, 0x3162, 0x3163 };
final static char[] bat = { 0, 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f, 0x3140, 0x3141, 0x3142, 0x3144, 0x3145, 0x3146, 0x3147, 0x3148, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e };
public static String assignment(char s) {
int a, b, c;
String result = "";
char han = s;
if (han >= 0xAC00 && han <= 0xD7A3) {
c = han - 0xAC00;
a = c / (21 * 28);
c = c % (21 * 28);
b = c / 28;
c = c % 28;
result = result + mo[a] + ja[b];
if (c != 0) result = result + bat[c] ;
System.out.println(String.format("자음: %c",mo[a]));
System.out.println(String.format("모음: %c",ja[b]));
System.out.println(String.format("종성: %c",bat[c]));
}
else {
result = result + han;
}
return result;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char s = sc.next().charAt(0);
assignment(s);
}
}
이런 식으로 쓰다가는 너무 길어지겠네요
재미있었던 것들만 뽑아서 쓰겠습니다
이건 속이 빈 사각형입니다
package assignment6;
import java.util.Scanner;
public class MainClass {
public static void main(String[] args) {
int h,w;
Scanner sc = new Scanner(System.in);
h = sc.nextInt();
w = sc.nextInt();
for (int i = 0; i < h; i++) {
for (int j = 0; j < w; j++) {
if(i==0 || j==0 || i==h-1 || j==w-1)
System.out.print("* ");
else
System.out.print(" ");
}
System.out.println();
}
}
}
다음
import java.util.Scanner;
public class MainClass {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int leng = sc.nextInt();
int arr[][] = new int[leng][leng];
int count=0;
for (int x = 0; x < leng; x++) {
if(x%2==0) {
for (int y = 0; y < leng; y++) {
count++;
arr[y][x] = count;
}
}
else {
for (int y = leng-1; y >= 0; y--) {
count++;
arr[y][x] = count;
}
}
}
for (int y = 0; y < leng; y++) {
for (int x = 0; x < leng; x++) {
System.out.print(String.format(" %d", arr[y][x]));
}
System.out.println();
}
}
}
결과로 보여드릴게요
이런 식으로 숫자가 나열됩니다
훨씬 많기는 하지만 이 정도로 정리하도록 하고 또 알게 된 것 중 하나인
원시자료형과 참조자료형에 대하여 알게 되었어요
일단 원시자료형은 기본적으로
원시자료형
byte 크기 > 1byte
short크기 > 2byte
int크기 > 4byte
long크기 > 8byte
char크기 > 2byte
flaot크기 > 4byte
double크기 > 8byte
boolean크기 > 1bit
이 정도가 원시자료형입니다
참조자료형은
참조자료형
배열
클래스
인터페이스
값이 아닌 객체의 주소를 가지고 있는 자료형입니다
이 둘의 차이점은 간단하게 원시자료형은 순수한 값 하나 참조자료형은 여러 가지 값을 받을 수 있다는 것입니다
참조자료형은 new로 인스턴스화를 해주어야 하는데
예외적으로 String은 new를 사용하지 않고
String str = "";
이런 식으로 설정해줄 수 있습니다
쓸 것은 많지만 오늘은 여기까지 쓰도록 하겠습니다
안녕히 가세요 ㅎㅎ
'JAVA > Java Basic' 카테고리의 다른 글
Java - Math 클래스 (0) | 2020.02.22 |
---|---|
자바 클래스 (0) | 2019.08.05 |
DB세팅, 추상화공부 (0) | 2019.07.23 |
자바 코딩(3) (1) | 2019.06.18 |
자바 코딩(2) (1) | 2019.06.18 |