JavaFX 를 사용하여 미니 프로젝트를 진행하려하는데 Eclipse 가 아닌 IntelliJ 를 사용하여 프로젝트를 진행해보려 한다.

 

프로젝트는 데이터베이스를 연동하여 JavaFX 를 사용하여 서버(1), 사용자(2) 환경으로 구성한뒤 사용자가 숫자야구를 진행하여 순서대로 값을 입력하면 서버에서 값을 전달받아 처리하는 형식으로 만들어 보려고 한다.

 

프로젝트를 진행하기 앞서서 우선적으로 인텔리제이에 JavaFX 프로젝트를 생성해야 한다.

 

New Project 클릭

 

Generators 에서 JavaFX 를 선택해준뒤 프로젝트 이름과 경로를 설정하고 Next 클릭

 

Create 클릭

 

생성된 프로젝트에서 main 을 실행해주면 정상적으로 출력된다

 

- 단점 -

eclipse 보다 코드 실행속도가 느리다..... 그리고 Scene builder 를 연동하여 사용할때 우클릭으로 사용이 가능한 것 같긴 한데 관련된 자료가 너무 적어 설정 방법을 아직 모르겠으므로 우선은 SceneBuilder 를 설치하여 인텔리제이와 연동하지 않고 그냥 SceneBuilder 에서 fxml 파일을 불러와서 사용하는 방식으로 사용해야 할 것 같다.

 

- Scene Builder 다운로드 링크 -

 

Scene Builder - Gluon

Drag & Drop,Rapid Application Development. Download Now   Integrated Scene Builder works with the JavaFX ecosystem – official controls, community projects, and Gluon offerings including Gluon Mobile, Gluon Desktop, and Gluon CloudLink.   Simple Drag

gluonhq.com

Mac OS X dmg (Apple Silicon) 설치 - M3 칩셋 기준

 

SceneBuilder 실행 후 좌측 하단의 Open Project 클릭

 

프로젝트 경로로 접근하여 변경하고자하는 fxml 파일을 선택한 뒤 Open 클릭

 

정상적으로 fxml 파일이 끌어와진다 이후 저장하게 되면 인텔리제이의 fxml 파일에도 적용된다

 

 

 

 

 

 

 

아무래도 프로젝트를 진행하는데 있어서 윈도우에서 SceneBuilder 를 연동하거나 JavaFX 를 사용하는 방법에 대해서는 자료가 좀 있지만, 맥OS 관련해서는 자료가 거의 없다시피 하다... 문제가 발생할때 마다 하나하나씩 다 이클립스랑 비교해가며 부딫혀보는 수 밖에 없을 것 같다.....

728x90

'BE > JAVA' 카테고리의 다른 글

11. JAVA - Scanner  (0) 2023.11.25
10. JAVA - 연산자  (1) 2023.11.13
09. JAVA - 포멧 문자  (1) 2023.11.13
08. JAVA - 패키지란?  (0) 2023.11.13
07. JAVA 변수와 자료형  (0) 2023.11.09

Scanner (표준 입, 출력 객체 지원 클래스)

1. Scanner

 

: java.util 패키지에 들어있는 클래스 (java.util.Scanner)import로 불러와서 사용해야 한다.( import 단축키 - Ctrl + Shift + O )

package input;

import java.util.Scanner;
// java.lang은 기본 패키지로 자동으로 import되며
// java.lang을 제외한 패키지는 모두 import로 가져와야 사용 가능하다

public class Input {
	public static void main(String[] args) {
        // System.out	: 표준 출력 객체
        // System.in	: 표준 입력 객체

        Scanner sc;
        // Scanner 클래스 : 데이터를 읽어오는 도구
        // Scanner : 자료형(type), sc : 변수 이름

        sc = new Scanner(System.in);
        // sc라는 변수에 공간을 생성한다

        System.out.print("이름 입력 : ");
        String name = sc.next();	// next() : 입력 받는 키 값을 문자열로 가져온다
                                	// 이 값을 name이라는 문자열 변수로 저장한다

        System.out.println("입력 받은 이름은 " + name + " 입니다");

        sc.close();
        // - scanner는 사용 후 종료를 시켜주는 것이 바람직하다
    }
}

저장할 변수 이름이 sc 일 필요는 없다.

또한, Scanner 를 선언하면서 동시에 초기화할 수 있다.

Scanner abc = new Scanner(System.in);

 

 

 

 

 

package input;

import java.util.Scanner;
// java.lang은 기본 패키지로 자동으로 import되며
// java.lang을 제외한 패키지는 모두 import로 가져와야 사용 가능하다

public class Input {
	public static void main(String[] args) {

    	// 1. 키보드 값을 입력받기 위해서 Scanner를 생성
        Scanner scan = new Scanner(System.in);
        
        // 2. 키 값을 저장할 변수를 선언
        String name;
        int age;
        double height;
        
        // 3. 입력 진행
        System.out.print("이름 : ");
    	name = scan.next();			// next() : 키 값을 문자열로 가져온다
        
        System.out.print("나이 : ");
        age = scan.nextInt();			// nextInt() : 키 값을 정수로 가져온다
        
        System.out.print("신장 : ");
        height = scan.nextDouble();		// nextDouble() : 키 값을 실수로 가져온다
        
        // 4. 입력받은 내용을 원하는 대로 출력한다
        System.out.printf("이름 : %s (%d세)\n", name, age);
        System.out.println("신장 : " + height + "cm");
        
        scan.close();
        
    }
}

Scanner는 입력된 키 값을 '버퍼(buffer)' 라는 임시 공간을 활용해서 가져온다.

※ 버퍼는 enter와 space를 구분자로 인식한다 ※

 

 

 

 

 

package input;

import java.util.Scanner;

public class Input {
	public static void main(String[] args) {
    	
        Scanner sc = new Scanner(System.in);
        int n1, n2;
        
        System.out.print("두 정수 입력 : ");
        // 콘솔 입력창에서 10 20 30 40 50 60 을 입력
        // 버퍼는 enter와 space를 구분자로 인식하기 때문에
        // 버퍼에 10 값이 스페이스바 때문에 n1으로 구분되어 들어가고
        // 버퍼에 20 값이 스페이스바 때문에 n2로 구분되어 들어간다
        n1 = sc.nextInt();
        n2 = sc.nextInt();
        System.out.printf("n1 = %d, n2 = %d\n", n1, n2);
        
        
        int n3, n4;
        
        System.out.print("다시 두 정수 입력 : ")
        // 정수를 다시 입력받으려 했으나 위에서 입력한 값에서
        // 10과 20은 n1과 n2로 할당되었고 뒤에 남은 30과 40값이
        // 구분자에 의해 자동으로 n3와 n4로 할당된다
        n3 = sc.nextInt();
        n4 = sc.nextInt();
        System.out.printf("n3 = %d, n4 = %d\n", n3, n4);
        
        
        sc.nextLine();	// 버퍼의 모든 데이터를 가져온다
        		// - 엔터만 구분자로 인식
        
        int n5, n6;
        
        System.out.print("마지막 두 정수 입력 : ")
        // 여기서 나머지 할당될 값 50, 60이 들어오지 않는 이유는
        // enter만 구분자로 인식하는 nextLine()이 사용되었기 때문이다
        // 버퍼에서 남은 입력이 50 60\n 이 남았기 때문에 \n을 인식하여
        // "50 60" 이 통째로 한 입력값으로 인식되며, 이 값은 int자료형이
        // 아니므로 n5와 n6에 들어갈 수 없으니 버려지게 되고 새로운 입력값을 받는다
        // 70 80 입력하면 n5와 n6에 70, 80 값이 입력된다
        n5 = sc.nextInt();
        n6 = sc.nextInt();
        System.out.printf("n5 = %d, n6 = %d\n", n5, n6);
        
        sc.close();
        
    }
}
728x90

'BE > JAVA' 카테고리의 다른 글

IntelliJ 에서 JavaFX 프로젝트 만들기  (0) 2024.03.09
10. JAVA - 연산자  (1) 2023.11.13
09. JAVA - 포멧 문자  (1) 2023.11.13
08. JAVA - 패키지란?  (0) 2023.11.13
07. JAVA 변수와 자료형  (0) 2023.11.09

연산자(operator)

1. 산술 연산자 : 사칙 연산을 제공

		int n = 10;
		
		System.out.println("n + 6 = " + (n + 6));
		
		System.out.println("n =" + n);
		// 산술 계산을 한다고 변수의 값이 변화하는 것은 아님
		
		System.out.println("n - 6 = " + (n - 6));	// 4
		System.out.println("n * 2 = " + n * 2);	// 20
		System.out.println("n / 3 = " + n / 3);	// 3
		System.out.println("n % 3 = " + n % 3);	// 1
		
		System.out.println("n / 3.0 = " + n / 3.0);
		// n / 3 은 자료형이 정수이기 때문에 3까지만 출력 된다
		// n / 3.0 은 실수형으로 자동 형변환 되어 나머지까지 나오게 된다.
		// 3.3333333333333335
		// 소수점 끝자리가 5인 이유는 계산 시 오차가 발생했기 때문

 

 

 

 

2. 대입 연산자 : 공간(= 변수)에 값을 할당하는 연산자

- 좌변은 공간, 우변을 결과 값

- 대입 연산은 항상 우변부터 수행

- 대입 연산의 양변의 자료형은 일치시킨다

		int n = 10 + 3;
		// int n = 13;
		// 우변부터 계산 후 변수에 대입
		
		System.out.println("n = " + n);
		
		int a, b, c = 30;
		// 1. a, b, c 모두 30으로 초기화 된다??
		// 2. c 만 30으로 초기화 된다??
		// int a, int b, int c = 30 과 같음
		// 즉, 답은 2번
		
		// 변수를 한번에 초기화 하는 법
		int d, e, f;
		d = e = f = 30;

 

 

 

 

3. 복합 대입 연산자 : 산술 + 대입

- 연산한 결과를 변수에 다시 저장시 사용

		int n = 10;
		
		n += 6;	// n = n + 6;
		System.out.println("n = " + n); // 16
		
		n -= 3;
		System.out.println("n = " + n); // 13
		
		n *= 2;
		System.out.println("n = " + n);	// 26
		
		n /= 2;
		System.out.println("n = " + n); // 13
		
		n %= 5;
		System.out.println("n = " + n); // 3
		
		
		
		
		
		int a = 5, b = 3, c = 4;
		
		a += b *= c -= 2;
		// 복합대입연산자는 우선순위가 존재하지 않음
        
		System.out.println("a = " + a);		// 11
		System.out.println("b = " + b);		// 6
		System.out.println("c = " + c);		// 2

 

 

 

 

 

4. 증감 연산자 : 피연산자를 1증가 혹은 1감소

		int n = 10;
		
		++n;	// 전치 : 연산자가 앞에 붙은 경우
		System.out.println(n); // 11
		
		--n;
		System.out.println(n); // 10
		
		n++;	// 후치 : 연산자가 뒤에 붙은 경우
		System.out.println(n); // 11
		
		n--;
		System.out.println(n); // 10
		// 증감연산은 단독으로 사용 시 (전치/후치)는 차이가 없다.
		
		
		
		
		
		
		// (전치/후치)가 상관있는 경우
		int n1 = 10, n2, n3;
		
		n2 = ++n1;	// 전치 : 증감 후 다른 연산
		System.out.println(n1 + ", " + n2);	// 11, 11
		
		n3 = n1++;	// 후치 : 다른 연산 후 증감
		System.out.println(n1 + ", " + n3); // 11, 10
		
		
		
		
		
		// 연습
		int a = 5, b =  4, c = 7, d;
		d = ++a + b-- + c++;
		
		System.out.println(a); // 6
		System.out.println(b); // 3, 후치는 제일 마지막에 연산
		System.out.println(c); // 8, 후치는 제일 마지막에 연산
		System.out.println(d); // 17

 

 

 

 

5. 비교 연산자 : 데이터의 대소 관계를 비교

- 비교 결과는 boolean(true/false)로 얻어진다

		int n = 10;
		
		System.out.println("n > 10 결과 : " + (n > 10)); // false
		System.out.println("n >= 10 결과 : " + (n >= 10)); // true
		System.out.println("n < 20 결과 : " + (n < 20)); // true
		System.out.println("n <= 20 결과 : " + (n <= 20)); // true
		System.out.println("n == 9 결과 : " + (n == 9)); // false, 같으면 참, 다르면 거짓
		System.out.println("n != 9 결과 : " + (n != 9)); // true, 같으면 거짓, 다르면 참
		System.out.println();
		
		// 결과는 boolean 타입에 저장할 수도 있다.
		boolean result = n == 10; // boolean result = true
		System.out.println("result = " + result); // result = true

 

 

 

 

6. 논리 연산자 : true / false 를 연산

- 비교 결과는 boolean( true / false )로 얻어진다

		// 1. && : AND, 양쪽이 모두 참이면 결과가 참
		// - 다른 말로 곱(*) 연산
		// true : 1, false : 0 이라고 보면 됨
		System.out.println("true AND true 결과 : " + (true && true));		// ture
		System.out.println("true AND false 결과 : " + (true && false));		// false
		System.out.println("false AND true 결과 : " + (false && true));		// false
		System.out.println("false AND false 결과 : " + (false && false));	// false
		System.out.println();
		
		
		
		
		
		// 2. || : OR, 양쪽 모두 거짓이면 결과가 거짓
		// - 다른 말로 합(+) 연산
		// true : 1, false : 0 이라고 보면 됨
		System.out.println("true OR true 결과 : " + (true || true));		// true
		System.out.println("true OR false 결과 : " + (true || false));		// true
		System.out.println("false OR true 결과 : " + (false || true));		// true
		System.out.println("false OR false 결과 : " + (false || false));	// false
		System.out.println();
		
		
		
		
		// 3. ! : NOT, 참을 거짓으로 거짓을 참으로 변경
		// - 다른 말로 반전 연산
		// true : 1, false : 0 이라고 보면 됨
		System.out.println("NOT true 결과 : " + !true);		// false
		System.out.println("NOT false 결과 : " + !false);	// true

 

 

 

 

7. .equals : 자바 문자열 비교

- 문자열이 동일한지 확인한다

String a = "안녕하세요";
String b = "안녕하세요";

System.out.println(a.equals(b)); // true 출력
728x90

'BE > JAVA' 카테고리의 다른 글

IntelliJ 에서 JavaFX 프로젝트 만들기  (0) 2024.03.09
11. JAVA - Scanner  (0) 2023.11.25
09. JAVA - 포멧 문자  (1) 2023.11.13
08. JAVA - 패키지란?  (0) 2023.11.13
07. JAVA 변수와 자료형  (0) 2023.11.09

포멧 문자

포멧문자 사용하는 이유 : 문자열 중간에 데이터 채우기가 수월하기 때문

※ 파이썬에서 포멧팅이라 부름 ※

포멧 문자 종류
%s %d %f %c
String
문자열 자리
Decimal
10진 정수 자리
Float
실수 자리
Character
문자 자리

%.nf : n자리 만큼 소수점 출력

 

		String name = "홍길동";
		int age = 33;
		double height = 163.3;
		char gender = '여';
		
		System.out.printf("이름 : %s (%d세, %c)\n", name, age, gender);
		
		System.out.printf("신장 : %f\n", height);
		// float형은 소수점 6자리가 기본
		// 출력 시 163.300000 출력됨
		
		System.out.printf("신장 : %.1f\n", height);
		// .1 을 앞에 붙여서 소수점 1자리까지만 출력되게 설정
		// 163.3 으로 출력됨

 

728x90

'BE > JAVA' 카테고리의 다른 글

11. JAVA - Scanner  (0) 2023.11.25
10. JAVA - 연산자  (1) 2023.11.13
08. JAVA - 패키지란?  (0) 2023.11.13
07. JAVA 변수와 자료형  (0) 2023.11.09
06. JAVA 이스케이프 문자(escape sequence)  (2) 2023.11.09

패키지(package)

1. 패키지 : 관련있는 클래스 끼리 묶기 위해서 사용

- 패키지를 지정하지 않은 클래스는 생성 시 'default package' 에 생성된다.

- 이 'default package'는 이클립스에서만 보이는 패키지로 소스폴더에는 존재하지 않는다.

- 이 'default package'에 있는 클래스(.java)는 외부에서 불러올 수 없다.

( 외부에서 불러올 수 없는 코드는 1회성... 쓰레기... )

 

 

패키지는 클래스 생성 시 무조건 무조건 생성하자

728x90

'BE > JAVA' 카테고리의 다른 글

10. JAVA - 연산자  (1) 2023.11.13
09. JAVA - 포멧 문자  (1) 2023.11.13
07. JAVA 변수와 자료형  (0) 2023.11.09
06. JAVA 이스케이프 문자(escape sequence)  (2) 2023.11.09
05. JAVA 자동 형변환 (기초)  (0) 2023.11.09

JAVA 변수

1. 변수 : 데이터를 저장하는 공간

- 연산을 통해서 얻어진 결과를 재사용 하기 위해서 사용

package variable;

public class Variable {
	
	public static void main(String[] args) {
		
		int num = 10 + 5;
		
		System.out.println("num");	// "" -> 문자열 -> 그대로 출력
		System.out.println(num);	// 변수 호출 -> 저장된 값을 출력
		
		System.out.println("num = " + num);	// num = 15 출력
		
		num = 20;	// 변수는 변하는 수. 즉, 값을 변경해서 저장 가능
		
		System.out.println("num = " + num); // num = 20 출력
		
	}
}

 

변수를 선언한다. == 변수를 생성한다.

변수를 선언(=생성)시 항상 자료형을 붙인다.

같은 이름의 변수를 또 선언하면 충돌(= 에러)

앞서 만든 변수를 사용할 땐 자료형을 붙이지 않는다.

 

 

 

변수 선언하는 방법

package variable;

public class Variable {
	public static void main(String[] args) {
		// 변수 선언 2가지 방법
		// 1. 선언 후 초기화
		int n1 = 10;
		
		// 2. 선언만
		int n2;
		// 선언 이후 초기화
		n2 = n1 + 2;
	}
}

 

 

 

 

 

 

 

 

 

2. 자료형

자바의 자료형 타입 크기 범위
boolean 논리 1 bit true / false
char 문자 2 byte 대부분 나라의 문자
byte 정수 1 byte -128 ~ 127
short 정수 2 byte 약 -3만 ~ 3만
int 정수 (기본 자료형) 4 byte 약 -21억 ~ 21억
long 정수 8 byte 매우 큼
float 실수 4 byte 소수점 7자리까지 권장
double 실수 (기본 자료형) 8 byte 소수점 14자리까지 권장

※ bit : 컴퓨터 데이터의 최소 단위 ( 0 or 1 )

※ byte : 파일의 최소 단위. 1 byte = 8 bit ( 0000 0000 ~ 1111 1111 )

※ 1 byte 의 범위 = 0 ~ 255 (256개)

 

package variable;

public class DataType {
	
	public static void main(String[] args) {
		
		boolean bo = true;
		char ch = '한';
		byte by = 127;
		short sh = 30000;
		int it = 2000000000;
		long lo = 3000000000L;			
		// 정수형 값의 기본 자료형은 int
		// 30억은 int 자료형 범위 밖이라 끝에 L을 붙여 long 자료형임을 정의해줘야 함
		// L을 붙이지 않으면 오류 출력
		
		float fl = 0.1234567F;
		// 실수형 값의 기본 자료형은 double
		// 그러므로 자료형을 float로 끝에 F를 붙여 float 자료형임을 정의해줘야 함
		// F를 붙이지 않으면 오류 출력 
		double db = 0.12345678901234;
		
	}
}

 

 

java의 기본 자료형은 8가지 ( boolean, char, byte, short, int, long, float, double )

위의 8가지를 제외한 자료형은 모두 참조 자료형

즉, 문자열(String) 자료형도 기본 자료형이 아닌 자바에서 문자열 처리를 지원하기 위해서

★  자동으로 제공되는 참조 자료형임!! ★

 

728x90

'BE > JAVA' 카테고리의 다른 글

09. JAVA - 포멧 문자  (1) 2023.11.13
08. JAVA - 패키지란?  (0) 2023.11.13
06. JAVA 이스케이프 문자(escape sequence)  (2) 2023.11.09
05. JAVA 자동 형변환 (기초)  (0) 2023.11.09
04. JAVA 자료형  (0) 2023.11.09

JAVA 이스케이프 문자 (escape sequence)

- 문자열 내에서 특수한 형태로 사용되는 문자들

- 백슬래시( \ )와 결합해서 사용

- 문자열(" ") 내에서 사용해야 함

 

package output;

public class EscapeSequence {
	
	public static void main(String[] args) {
		
		System.out.println("Hello\nWorld");		// \n : new line. 개행
		/*
		 Hello
		 World
		 */
		
		
		System.out.println("Hello\t\tWorld");	// \t : tab. 들여쓰기
		/*
		 Hello		World
		 */
		
		
		System.out.println("문자열 \"이스케이프\" 문자");	// \" : 문자열 묶는 기능을 제거
		/*
		 문자열 "이스케이프" 문자
		 */
		
		
		System.out.println("이스케이프는 백슬래시 \\와 결합한다");	// \\ : 이스케이프 처리 기능을 제거
		/*
		 이스케이프는 백슬래시 \와 결합한다
		 */
		
	}
	
}
728x90

'BE > JAVA' 카테고리의 다른 글

08. JAVA - 패키지란?  (0) 2023.11.13
07. JAVA 변수와 자료형  (0) 2023.11.09
05. JAVA 자동 형변환 (기초)  (0) 2023.11.09
04. JAVA 자료형  (0) 2023.11.09
03. JAVA 코드 자동 완성 단축키  (0) 2023.11.09

JAVA 자동 형변환

- 서로 다른 타입을 연산할 때 반생하는 형변환 (= 데이터 타입 변환)

- 데이터 크기가 작은 타입이 큰 타입으로 변경되어 처리된다.

 

package output;

public class AutoCasting {
	
	public static void main(String[] args) {
		// 자동 형변환
		// - 서로 다른 타입을 연산할 때 발생하는 형변환 (= 데이터 타입 변환)
		// - 작은 타입이 큰 타입으로 변경된다
		
		System.out.println(10 + 7.5);
		// 정수 + 실수 --> 원래는 서로 다른 타입이라 연산이 불가능
		
		System.out.println(10.0 + 7.5);
		// 실수 + 실수 --> 실수
		// 타입이 같으면 연산 가능
		
		// 즉, 정수와 실수를 연산하면 원래는 불가능하지만
		// 자동형변환에 의해서 작은 타입인 정수가 실수형으로 자동 형변환 되어 연산된다
		// 10 + 7.5 --> 10.0 + 7.5
		
		System.out.println(10 / 7);
		// 콘솔에 1 출력됨
		// 정수 / 정수 --> 정수
		// 타입이 같아서 자동 형변환이 발생하지 않음
		
		System.out.println(10 / 7.0);
		// 콘솔에 1.4285714285714286 출력됨
		// 정수 / 실수 --> 정수가 실수로 자동 형변환 된 후 계산됨
		
        
        
		// 자료형 크기 비교 : 문자열 > 실수 > 정수
		// - 자바는 문자열 이어 붙이기로 데이터를 자주 출력한다.
		System.out.println("10" + "5");
		// 콘솔에 105 출력
		
		System.out.println("10" + 5);
		// 콘솔에 105 출력
		// 5 -> "5"로 자동 형변환

	}
}
728x90

'BE > JAVA' 카테고리의 다른 글

07. JAVA 변수와 자료형  (0) 2023.11.09
06. JAVA 이스케이프 문자(escape sequence)  (2) 2023.11.09
04. JAVA 자료형  (0) 2023.11.09
03. JAVA 코드 자동 완성 단축키  (0) 2023.11.09
02. JAVA 주석  (0) 2023.11.09

+ Recent posts