
작업문
}
public class Main {
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('=');
System.out.print(sum);
}
}
}
} 출력 결과: 1+2+3+4+5+6+7+8+9+10=55작업문
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int count=0;
int 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();
}
}작업문
} while( 2. 조건식 );
public class Main {
public static void main(String[] args) {
char c = 'a';
do {
System.out.print(c);
c = (char) (c + 1);
}while(c<='z');
}
}public class Main {
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();
}
}
}import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("정수를 5개 입력하세요.");
int sum=0;
for(int i=0;i<5;i++) {
int n = scanner.nextInt();
if (n <= 0)
continue;
else
sum += n;
}
System.out.println("양수의 합은 "+sum);
scanner.close();
}
}import java.util.Scanner;
public class Main {
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();
}
}hi my name is hogeun
exit
종료합니다...
논리적으로 영역을 분리해줌

지역변수는 stack에 메모리를 할당하여 초기화하지 않고 사용이 불가능
주의! 배열 및 클래스는 heap에 메모리를 할당하여 초기화 하지 않고 사용이 가능하다. → 초기화시 변수의 공간에 0만을 넣어준다. 이미 초기화된 것
배열 선언과 배열 생성의 두 단계 필요

배열 선언 방법 2가지
배열 생성 ← 초기화 X (선언 후 생성 / 선언과 생성 동시에)
선언과 함께 초기화
int intArray[] = {0,1,2,3,4,5,6,7,8,9}; //[]는 비워두어야함
int intArray[10]; //잘못된 배열 선언

주의사항
하나의 배열을 다수의 레퍼런스가 참조 가능
배열이 인자로 사용되거나 return값으로 사용되든지 전부 reference 값으로 전달 → 포인터를 사용하지 않는다는 의미
```java
/* reference 값의 전달 예시 */
int []f(int[]b){
b[0] = 1;
return b;
}
int []a;
a = new int[3];
int[] c = f(a); // **c는 a를 참조하게 된다!!**
```

import java.util.Scanner;
public class Main {
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+"입니다.");
}
}배열은 자바에서 객체로 관리
배열 객체 내에서 length필드는 아예 생성 시에 함께 생성됨
length 필드는 배열의 크기를 나타냄

import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int sum=0;
int intArray[]=new int[5];
System.out.print(intArray.length + "개의 정수를 입력하세요>>");
for(int i = 0;i<intArray.length;i++)
intArray[i]=scanner.nextInt();
for(int i=0;i<intArray.length;i++)
sum+=intArray[i];
System.out.print("평균은 " + (double)sum/intArray.length);
scanner.close();
}
}배열이나 나열(enumeration)의 각 원소를 순차적으로 접근하는데 유용한 for문 → 꼭 배열이 아니더라도 동일한 타입을 가지는 container이면 가능함
값의 출력과 사용은 가능하지만, 값의 변경은 되지 않는다
값의 갱신은 원래의 for문을 사용
for([*type명*] [*변수명*] : [*type배열이름*]) 식으로 사용
/* 예시1 */
int[] num = {1,2,3,4,5};
int sum=0;
**for(int k: num) //반복될 때 마다 k의 값이 num[0],..,num[4]값으로 설정**
sum += **k**;
System.out.println("합은" + sum);
출력 결과:
합은 15
Stirng names[] = {"사과", "배", "바나나", "체리", "딸기", "포도"};
for(String s : names)
System.out.print(s + " ");
출력 결과:
사과 배 바나나 체리 딸기 포도
enum Week {월, 화, 수, 목, 금, 토, 일};
for(Week day : Week.values())
System.out.print(day + "요일 ");
//values함수를 통해 Week enum의 모든 상수를 저장한 배열을 생성하여 반환함
출력 결과:
월요일 화요일 수요일 목요일 금요일 토요일 일요일
i[0], i[1] 각각은 1차원 배열을 가짐 → 1차원 배열 객체의 트리구조를 가짐!

i.length → 2차원 배열의 행의 개수로서 2
i[n].length → n번째 행의 열의 개수
for(int n;n<i.length; n++){
for(int m;m<i[n].length;m++){
System.out.println(i[n][m]);
}
}public class Main {
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));
}
}각 행의 열의 개수가 다른 배열
비정방형 배열의 생성

i.length: 2차원 배열의 행의 개수로서 4
i[n].length는 n번째 행의 열의 개수
public class Main {
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();
}
}
} -출력 예시: 10 11 12배열의 레퍼런스 리턴
메소드의 리턴 타입과 리턴 받는 배열 타입의 일치
리턴 타입에 배열의 크기를 지정하지 않음

베열 레퍼런스 타입이면 배열 받을 수 있음
int arrayInt[][];
arrayInt=new int[2]; (X) arrayInt = new int[2][]; (O)
ㄴ같은 차원이어야한다.

main() 메소드의 매개변수로 명령행 인자의 전달
개발 tool에서는 Run Configurations에서 program arguments에 넣어주면 된다
주의! 명령행에서 인자를 전달했는데 클래스에 main()메소드가 없을 경우 실행 시작 후 바로 오류를 내면서 종료한다

public class Main{
public static void main(String[] args) {
double sum=0.0;
for(int i=0; i<args.length; i++)
sum+=Double.parseDouble(args[i]);
System.out.println("합계: " + sum);
}
}<type 개념을 쓰는 언어>
compile시 문장에 따라 Compile time error 발생
semetics에 관계 없이 Run time error 발생

예외가 발생할 때 대응하는 프로그램 코드
try-cahch-finally문 사용; finally 블록 생략 가능

try블록에서 예외가 발생하지 않은 정상적인 경우: try블록 내 실행 후, finally 블록 내 실행한다.
try블록에서 예외가 발생한 경우: try블록 내에서 전달받은 예외 객체를 catch의 매개변수로 보내준다. 그리고 catch블록 내의 예외 처리문을 실행하고 finally 블록 내 실행한다
*예외를 클래스로 묶어서 던져준다!!
주의! catch 블럭은 여러개 가능하여 여러가지 상황의 예외를 받을 수 있다. n중으로 try문을 만들어서 여러 예외를 받는 방법도 있다.
주의! finally 블럭은 catch에서 continue, break, return등의 문장을 써주더라도 항상 실행된다. 일부러 try나 catch에서 제어 옮겨도 항상 finally는 그 제어 옮기는 문장 전 우선적으로 실행됨!
예시

예시

주의! catch문에서 scanner.next();를 하여서 버퍼에 이미 입력된 키를 비워주어야 한다. 버퍼 비우지 않으면 무한 Exception throw발생! Scanner가 대기 상태가 될 수 없다.예시

https://believed-poinsettia-f0f.notion.site/4-ee015a23d2424e419cc971b8cdbc5db0?pvs=4