일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- #오라클 #함수 #MAX() #MIN() #LPAD() #SUBSTR() #TO_CHAR() #복사 #지우기 #수정
- #웹 #중요한 것
- #자바 #입출력
- #함수 #VIEW #시퀀스 #INDEX
- #스윙 #함수 #Swing
- #자바 #입출력 #함수
- #웹 #HTTP 프로토콜
- #스프링 프레임 워크 #인코딩 #컨텍스트 #환경설정
- #자바 #스윙관련 함수 #API보고 정리했음
- #프로그래밍 기초
- #Web #웹 #jsp #servlet
- #오라클 #계정 생성 #테이블 #생성 #조회 #추가
- #함수 #키워드 #조인 #서브쿼리
- #오라클 #자바 #연동
- #자바 #오라클 #JDBC
- #오라클 #11g #테이블
- #오라클 #용어 정리 #데이터 타입 #비교 연산자 #논리 연산자 #SELECT 문
- #StringBuffer #자바 #
- #HTML4.01또는 5의 차이 #parsing #웹브라우저 #form 태그 #태그 속성 #id #name
- #제약 조건 #함수 #컬럼 변경 #테이블 변경& 삭제
- #돔 트리 #form 태그 #이스케이프문자 #시작태그 #form태그
- #jdbc #자바
- #자바 #파일 #함수
- #48일차 #한 내용 #요약
- #BigDecimal
- #웹 #정의 #5대 브라우저 #
- #자바
- #자바 #오라클 #연동
- #Ajax #EL #JSTL
- #리뷰 #CSS #선택자
- Today
- Total
IT journey
JAVA-제어문(feat.파일 입출력) 본문
직접 내용 정리하고 만든 예이니 퍼가실 때는 출처를 남겨주세요 :)
※ 참고사항
제어문에 들어가기 전, 증감연산자, 비교(관계)연산자와 논리연산자에 대해 올린 C언어-연산자 편을 참고하시면 아래에 작성되는 예들을 이해하는 데 수월하오니 참고부탁드립니다.
1. 조건문
(1) 기본 구조
#기본구조
if (조건문){
조건문이 참일 경우 실행할 문장;
}else{
조건문이 거짓일 경우 실행할 문장;
}
#다중 조건 판단
if (조건문){
조건문이 참일 경우 실행할 문장;
}else if (조건문){
이전 조건문이 거짓일 때 실행할 문장;
}else{
이전 조건문이 거짓일 때 수행할 문장;
}
(2) 예
import java.io.InputStream;
public class Main {
public static void main(String[] args) throws Exception {
InputStream in = System.in;
int a;
a = in.read();
int b=50;
if (a>b){
System.out.printf("a의 값이 더 큽니다.a의 값은 %d입니다.",a);
}else if(a==b){
System.out.println("a와 b의 변수에 저장된 주소값이 같습니다.");
}else{
System.out.printf("b의 값이 더 큽니다.b의 값은 %d입니다.",b);
}
}
}
위 코드와 관련된 메소드 내용을 정리해봅시다.
○ InputStream의 read메소드는 1byte의 사용자 입력을 받습니다.
하지만, read메소드로 읽은 데이터는 int 자료형으로 저장되어 아스키코드 값으로 반환해서 보여줍니다.
참고로, 아스키 코드 관련 링크는 아래와 같습니다.
https://namu.wiki/w/%EC%95%84%EC%8A%A4%ED%82%A4%20%EC%BD%94%EB%93%9C
2. switch/case 문
(1) 기본 구조
#기본 구조
switch(입력변수){
case 입력값:
break;
case 입력값:
break;
...
default: ...
break;
}
(2) 예
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws Exception {
InputStream in = System.in;
InputStreamReader reader = new InputStreamReader(in);
BufferedReader br = new BufferedReader(reader);
String word = br.readLine();
int n = word.length();
switch(n){
case 10: word = "문자의 개수가 10개입니다.";
break;
case 9: word = "문자의 개수가 9개입니다.";
break;
case 8: word = "문자의 개수가 8개입니다.";
break;
case 7: word = "문자의 개수가 7개입니다.";
break;
default: word = "문자의 개수가 최소 0개입니다.";
break;
}
System.out.println(word);
}
}
위 코드와 관련된 메소드 내용을 정리해봅시다.
○ BufferedReader는 사용자가 엔터키를 입력할 때까지 사용자의 입력을 받아들입니다.
2. 반복문
(1) while 문
[기본 구조]
#기본 구조
while(조건식){
조건이 참인 동안 실행할 문장;
}
참고로, 조건이 거짓이면 {} 블록을 한 번도 실행하지 않습니다.
[예]
import java.io.FileOutputStream;
import java.io.IOException;
public class Main{
public static void main(String[] args) throws IOException{
FileOutputStream output = new FileOutputStream("example.txt");
int i=0;
while(i<23){
i = ++i;
String sentence = i+"번째 IT journey 포스팅입니다.\r\n"; #\r\n은 줄바꿈 문자
output.write(sentence.getBytes());
}
output.close();
}
}
○ FileOutputStream는 파일을 생성해주고 내용을 쓸 때는 바이트 배열로 값을 써야 하므로 getByte() 메서드를 이용해 String을 byte 배열로 바꾸어줍니다.
(2) do while 문
[기본 구조]
#기본 구조
do{
조건이 참인 동안 실행할 문장;
}while(조건식);
참고로, 조건이 거짓이더라도 {} 블록을 한 번은 실행합니다.
[예]
import java.io.FileWriter;
import java.io.IOException;
public class Main{
public static void main(String[] args) throws IOException{
FileWriter fw = new FileWriter("example.txt");
int i=0;
do{
i=++i;
String senetence = i+"번째 포스팅입니다.\r\n";
fw.write(senetence);
}while(i<23);
fw.close();
}
}
○ FileWriter를 이용해 문자열을 직접 파일에 쓸 수 있습니다.
참고로, \r\n을 안 쓰고 싶다면 FileWriter 대신 PrintWriter를 이용해 쓰면 됩니다.
○ 파일의 내용을 추가하고 싶을 경우 new FileWriter(파일명,true)를 하고 쓰면 됩니다.
(3) for문
[기본 구조]
#기본 구조
for (초기치;조건문;증가치){
조건식이 참일 경우 실행할 문장;
}
[예 1]
import java.io.InputStream;
public class Main {
public static void main(String[] args) throws Exception {
InputStream in = System.in;
byte [] a = new byte[5];
in.read(a);
int b=50;
for(int i=0; i<a.length; i++){
if(a[i]<b){
System.out.printf("b의 값이 더 큽니다.b의 값은 %d입니다.\n",b);
}else if(a[i]==b){
System.out.println("a와 b의 변수에 저장된 주소값이 같습니다.");
}else{
System.out.printf("a의 값이 더 큽니다. a의 값은 %d입니다.\n",a[i]);
}
}
}
}
위 코드와 관련된 메소드 내용을 정리해봅시다.
○ 길이 5짜리 byte 배열을 만든 뒤 InputStream의 read메소드는 5byte의 사용자 입력을 받습니다.
하지만, read메소드로 읽은 데이터는 int 자료형으로 저장되어 아스키코드 값으로 반환해서 보여줍니다.
아스키 코드 관련 링크를 위 조건문 쪽에 나와있는 링크을 참고해주시면 됩니다.
[예 2]
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class Main{
public static void main(String[] args) throws IOException{
PrintWriter pw = new PrintWriter("example.txt");
for(int i=1;i<10;i++){
String senetence = i+"번째 포스팅입니다.";
pw.println(senetence);
}
pw.close();
PrintWriter pw2 = new PrintWriter(new FileWriter("example.txt",true));
for(int i=10;i<=23;i++){
String senetence = i+"번째 포스팅입니다.\r\n";
pw2.write(senetence);
}
pw2.close();
}
}
○ PrintWriter를 이용해 문자열을 직접 파일에 쓸 수 있습니다. 추가하고 싶을 경우에는 위와 같이 FileWriter의 객체를 사용하면 됩니다.
(4) 반복문을 빠져나갈때는 break를, 조건문으로 돌아갈 때는 continue를 씁니다.
[예]
for문에 나온 예 2를 라인단위로 읽어드린 예입니다.
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new FileReader("example.txt"));
while(true){
String line = br.readLine();
if(line == null)
break;
System.out.println(line);
}
br.close();
}
}
이전 발행 글
'개인공부공간 > JAVA' 카테고리의 다른 글
JAVA - 클래스 (10) | 2021.06.08 |
---|---|
JAVA-자료형 (10) | 2021.06.05 |