Java

Java 024. 배열(Array)(2)

2023. 6. 29. 23:44

 

문자열 3개를 저장할 수 있는 배열(names)을 선언, 초기화.

String[] names = new String[3];

 

배열 names에 문자열을 하나씩 저장

names[0] = "김하늬";
names[1] = "김바람";
names[2] = "철이";

 

배열 names의 내용을 한 줄로 출력 

for 구문

for ( int i = 0; i < names.length; i++) {
	System.out.print(names[i] + " ");
}

 

for-each 구문

for (String n : names) {
	System.out.print(n + " ");
}

 

for문을 사용해서 별(*) 을 삼각형으로 출력

 

*

**

***    

****

*****

위처럼 별을 출력한다.

 

(바깥쪽 x for문)

x는 1로 시작하여 x가 6보다 작을 때 까지 x를 1씩 증가시킨다. (줄바꿈을 해주는 반복문)

 

(안쪽 y for문)

y는 1로 시작하여 y가 x보다 작거나 같을 때 까지 y를 1씩 증가시킨다. (별의 갯수를 늘려주는 반복문)

 

(실행 과정)

바깥쪽 x for문 -> x는 1임 -> 1은 6보다 작음(true) -> 반복문 실행 -> 

안쪽 y for문으로 이동 -> y는 1임 -> 1은 1보다 작거나 같음(true) -> 반복문 실행 -> * 출력 -> 출력 후 y를 1증가 ->

2(y)는 1(x)보다 작거나 같지 않음(false) -> 반복문 종료 -> 줄바꿈 -> 줄바꿈 후 x를 1 증가 -> 2(x)는 6보다 작음(true)

-> 반복문 실행

.

.

.

x가 6보다 작을 때까지(5) 위와 같이 반복문을 실행한다.

 

 

while문을 사용해서 별(*) 을 삼각형으로 출력

 

(바깥쪽 while문)

line이 5보다 작거나 같을 때 동안만(까지만) 반복문을 실행한다.

 

(안쪽 while문)

count가 line보다 작거나 같을때 동안만(까지만) 반복문을 실행한다.

 

(실행 과정)

바깥쪽 while문 -> 1(line)은 5보다 작거나 같음(true) -> 반복문 실행 -> 

안쪽 while문으로 이동 -> 1(count)은 1(line)보다 작거나 같음(true) -> 반복문 실행 -> * 출력 -> 출력 후 count를 1증가 ->

2(y)는 1(x)보다 작거나 같지 않음(false) -> 반복문 종료 -> 줄바꿈 -> 줄바꿈 후 x를 1 증가 -> 2(x)는 6보다 작음(true)

-> 반복문 실행

 

 

실행 결과

 

 

 

for문을 사용해서 별(*) 을 삼각형으로 출력

 

*

**

***    

****

*****

****

***    

**

*

위처럼 별을 출력한다.

(for문)

x는 1로 시작하여 x가 9보다 작거나 같을 때 까지 x를 1씩 증가시킨다. (줄바꿈을 해주는 반복문)

 

(if, for문)

만약 x가 5보다 작거나 같으면

y는 1로 시작하여 y가 x보다 작거나 같을 때 *을 반복 출력한다. (별의 갯수를 늘려주는 반복문)

 

(if else, for문)

만약 x가 5보다 작거나 같지 않으면

y는 4로 시작하여 y가 x - 5 보다 크거나 같을 때 까지 y를 1씩 감소시킨다. (별의 갯수를 줄여주는 반복문)

 

(실행 과정)

바깥쪽 x for문 -> x는 1임 -> 1은 9보다 작거나 같음(true) -> 반복문 실행 -> 

안쪽 if문으로 이동 -> x는 5보다 작거나 같음(true) -> if문 안쪽 for문으로 이동 -> y는 1임 ->

1(y)는 1(x)보다 작거나 같음(true) -> 반복문 실행 -> * 출력 -> 출력 후 y를 1증가 ->

2(y)는 1(x)보다 작거나 같지 않음(false) -> if문을 빠져나와서 줄바꿈 ->

다시 바깥쪽 x for문으로 이동 후 x가 9보다 작거나 같지 않을 때 까지 반복 실행.

 

만약 if문에서 x가 5보다 작거나 같지 않을 경우 -> else문의 for문 실행 -> y는 4임 -> y는 x -5 보다 크거나 같음 (true) ->

* 출력 -> 출력 후 y를 감소

 

.

.

.

 

실행 결과

for문과 break를 사용해서 구구단 만들기

2단은 2x2까지 3단은 3x3까지 4단은 4x4까지 ... 9단은 9x9까지만 구구단 출력

 

(바깥쪽에 있는 dan for문)

int 타입 dan은 2부터 시작. dan이 10보다 작을 때 까지 dan을 1씩 증가 반복문을 실행한다.

"--- 2단 ---" 출력 후 안쪽에 있는 n for문으로 이동한다.

 

(안쪽에 있는 n for문)

int타입 n은 1로 시작. n이 10보다 작을 때 까지 n을 1씩 증가 반복문을 실행한다.

만약 dan과 n의 값이 같지 않을 경우 "2 x 1 = 2" 을 출력한다.

 

dan과 n의 값이 같을 경우 반복을 break ( if문을 빠져나옴)

다시 바깥쪽의 for문으로 올라가서 dan을 1증가시킨다.

 

dan이 10보다 작을 때까지(9) 위와 같이 반복문을 실행한다.

 

 

break를 사용하지 않은 코드

바깥쪽 dan for문은 위와 동일하다.

(안쪽에 있는 n for문)

n은 1로 시작하고, n이 dan보다 작거나 같을 때 까지 n을 1씩 증가 반복문을 실행한다.

 


while 문을 사용해서 구구단 만들기

2단은 2x2까지 3단은 3x3까지 4단은 4x4까지 ... 9단은 9x9까지만 구구단 출력

 

먼저 변수를 선언해서 변수값을 초기화해준다.

 

(바깥쪽에 있는 a while문)

a가 10보다 작을 때 동안만 (까지만) 반복문을 실행한다.

"--- 2단 ---" 출력 후 안쪽에 있는 b while문으로 이동한다..

 

(안쪽에 있는 b while문)

b가 10보다 작을 때 동안만(까지만) 반복문을 실행한다.

a와 b의 값이 같지 않을 경우 if문은 break하지 않고 "2 x 1 = 2" 을 출력한다.

 

만약 a가 b와 값이 같을 경우 출력을 하지 않고 break ( if문을 빠져나옴) 한 후 a를 1증가시킨다.

바깥쪽의 while문으로 이동 후 위와 동일하게 반복문을 실행한다.

 

 출력 후 b의 값을 1증가시킨다. 다시 b while문으로 이동한다.

 

 

a가 10보다 작을 때까지(9) 위와 같이 반복문을 실행한다.

 

 

break를 사용하지 않은 코드

바깥쪽 a while문은 위와 동일하다.

 

(안쪽에 있는 b while문)

b가 a와 작거나 같을 때 동안만(까지만) 출력하고, b를 1씩 증가시킨다.

b가 a보다 크거나 같지 않으면 안쪽 b while문을 끝내고 나와서 a를 1증가시키고, 바깥쪽 a while문으로 이동한다.

 

a가 10보다 작을 때까지(9) 위와 같이 반복문을 실행한다.

 


실행 결과

.

.

.

 

실행 결과

 

이중 for문(반복문)을 사용해서 구구단만들기

 

(바깥쪽에 있는 dan for문)

int 타입의 dan 변수가 2 -> dan이 10보다 작을 때 까지 dan을 1씩 증가 반복문을 실행한다.

"--- 2단 ---" 출력 후 안쪽에 있는 n for문으로 이동한다.

 

(안쪽에 있는 n for문)

int 타입의 n 변수가 1 -> n이 9보다 작거나 같을 때 까지 n을 1씩 증가 반복문을 실행한다.

"2 x 1 = 2" 을 출력한다.

출력 후 n for문으로 올라가서 n이 9보다 작거나 같으면 다시 반복 / 작거나 같지 않으면 반복문을 빠져나온다.

빠져나온 후 다시 바깥쪽에 있는 dan for문으로 이동한다.

.

.

.

dan이 10보다 작을 때까지(9) 위와 같이 반복문을 실행한다.

 


이중 while문을 사용해서 구구단만들기

 

먼저 변수를 선언해서 변수값을 초기화해준다.

(바깥쪽에 있는 dan while문)

dan이 10보다 작을 때 동안만 (까지만) 반복문을 실행한다.

"--- 2단 ---" 출력 후 안쪽에 있는 n while문으로 이동한다..

 

(안쪽에 있는 n while문)

n이 10보다 작을 때 동안만(까지만) 반복문 실행한다.

"2 x 1 = 2" 을 출력한다.

출력 후 n while문으로 올라가서 n이 10보다 작으면 다시 반복 / 작지 않으면 반복문을 빠져나온다.

빠져나온 후 다시 바깥쪽에 있는 dan while문으로 이동한다.

.

.

.

dan이 10보다 작을 때까지(9) 위와 같이 반복문을 실행한다.

 


실행 결과

.

.

.

 

실행 결과

구구단 2단 만들어보기

 

System.out.printf(문자열 템플릿/포맷, 템플릿을 채울 값들); 채우는 값은 무조건 순서대로 작성해주기.

%d : 정수

%f : 실수

%s : 문자열

\n : 줄바꿈(new line)

\t : 탭(tap)

 

실행결과


정수 1부터 100까지 출력. 10단위로 줄바꿈.

 

반복문 조건식 : 1부터 100까지 반복. 반복할 때 마다 탭(tap)

조건문 조건식 : n을 10으로 나눈 나머지가 0인 지, 아닌 지 -> 0이면 줄바꿈 -> 0이 아니면 for문으로 다시 올라가서 반복.

 

 

실행결과

 

 

 

간단한 가위 바위 보 게임 프로그램 만들기

 

가위 - 0, 바위 - 1, 보 - 2

 

컴퓨터의 가위, 바위, 보는 난수로 만들고, (Random)

사용자의 가위, 바위, 보는 사용자에게 입력받음. (Scanner)

 

조건문을 사용하여 누가 이겼는 지 결과 출력하기

(computer : user)

 

 

내가 쓴 코드인데 길고 정신없다.

 

(조건문)

컴퓨터와 유저가 낸 값이 같은 경우에 "비겼습니다." 출력.

 

(조건문)

유저가 낸 값과 컴퓨터가 낸 값의 경우를 비교하여 유저가 이겼는지 컴퓨터가 이겼는지를 출력.

 

값이 같은 경우의 조건문은 따로 해주고, 나머지 경우는 if else문으로 작성해주었다.

 

 

방법1

(조건문)

컴퓨터와 유저가 낸 값이 같은 경우와 다른 경우를 if - else문으로 한꺼번에 작성.

 

 

방법2

(조건문)

내가 처음에 쓴 코드와 비슷.

 

 

방법3

(조건문)

조건문에 논리연산자를 사용해서 작성.  (확실히 코드가 줄어들었음.)

 

 

방법4

int 타입의 diff 변수에 user - computer를 저장.

user - computer == 0 일 경우에 "비겼습니다." 출력.

user - computer == - 2 또는 user - computer == 1 이면 "user가 이겼습니다" 출력.

그 외는 "computer가 이겼습니다." 출력.

 

user가 1(바위)를 내고 computer가 0(가위)를 낼 경우

1 - 0 = 1 이기때문에 user가 이김.

 

 

실행결과1
실행결과2
실행결과3

 

Java 003. Scanner Class Method

2023. 3. 18. 18:02

Scanner 클래스 메서드

  • nextInt() : 토큰(공백, 탭, 엔터) 으로 구분된 문자들을 읽어서 정수로 변환하고 리턴한다.
  • nextDouble() : 토큰(공백, 탭, 엔터) 으로 구분된 문자들을 읽어서 실수로 변환하고 리턴한다.
  • next() :  토큰(공백, 탭, 엔터) 을 기준으로 한 단어 또는 한 문자씩 문자열을 읽고 리턴한다. 공백 뒤에 다른 문자열이 입력되어 있으면, 입력 버퍼에 읽지 않은 문자들이 남아 있을 수 있다.
  • nextLine() : 엔터(줄바꿈)를 만날 때 까지 입력된 모든 문자들을 읽고 리턴한다. (문자 또는 문장 한 라인 전체를 입력받음). 입력된 모든 문자열을 공백까지 다 리턴한다.

1. 이클립스 다운로드

 

https://www.eclipse.org/downloads/

 

Eclipse Downloads | The Eclipse Foundation

The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 415 open source projects, including runtimes, tools and frameworks.

www.eclipse.org

zip 파일이 아닌 실행 파일을 이기때문에 다운로드 후 실행하여 바로 런처 다운로드가 가능하다.

 

실행 시키면 이클립스에서 런치할 파일을 선택하라고 하는데

c드라이브에 작업한 파일들을 넣을 ' workspaces' 파일을 만들었고, 이 파일 위치를 선택하면 이클립스가 실행 된다.

 

2. 이클립스 초기 세팅

이클립스 다크테마 설정

내 기준 다크테마가 더 가독성이 좋은 것 같다.

window - Preferences
General - Appearance - Theme

 

Java - Editor - Syntax Coloring

처음에 다크테마로 바꾸면 코드컬러도 약간 우중충 하게 바뀌어버려서 가독성이 떨어지는데

Java - Editor - Syntax Coloring 에서 코드컬러를 커스텀해줄 수 있다.

 

이클립스 인코딩(Encoding) 설정

Window - Preferences - General - Content Types - Java Class File  Default encoding

Default encoding에 UTF- 8 입력


Window - Preferences - General - Editors - Text Editors - Spelling

Encoding에 UTF-8 선택


3.Window -> Preferences -> General -> Workspace -> Text file encoding 에서 UTF-8 선택 

Window - Preferences - General - Workspace

Text file encoding 에서 UTF-8 선택 


Windows - Preferences - Web - JSP Filse

Encoding 에서 ISO 10646/Unicode(UTF-8) 선택

Web탭에 있는 CSS files, HTML files도 똑같이 ISO 10646/Unicode(UTF-8) 선택


프로젝트 인코딩(Encoding) 변경

Project - Properties - Resource

Text file encoding 에서 UTF-8 선택 

+ Recent posts