티스토리 뷰
출처: 생활코딩
Java - 입력과 출력 (2/6) : 앱이 시작할 때 데이터를 입력 1
⩤ String[] args
아래와 같은 java코드가 있다고 하자.
package org.opentutorials.javatutorials.io;
class InputDemo {
public static void main(String[] args) {
// code
// void는 출력값이 존재하지 않는다는 의미이다.
}
}
위의 main은 아주 특별한 method이다. main method를 구현하면, 자바 어플리케이션이 실행될 때 main 메소드가 호출
되면서 프로그램이 구동된다. 이 때 String[] args
은 입력값의 parameter
로 구동한다.
다시 말해 java 프로그램이 실행될 때 가장 먼저 실행되는 것이 main
이다.
이 main 안에서 코드를 실행하여 어플리케이션이 실행된다.
✍️ 사용자 입력 받기 (Scanner, BufferedReader)
import java.util.Scanner;
class InputForeachDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int number = sc.nextInt();
System.out.println(number);
sc.close();
}
}
기본적으로 Scanner를 사용해서 데이터를 입력받을 수 있으며, BufferedReader를 사용하기 위해서는 다음과 같이 코드를 바꾸면 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
class InputForeachDemo {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
System.out.println(s);
br.close();
}
}
BufferedReader를 사용하기 위해서는 BufferedReader 선언을 하고 new BufferedReader(new InputStreamReader(System.in))로 함께 데이터를 입력 받는다.
🤲🏻 Scanner와 BufferedReader의 차이점
Scanner
의 경우 한 글자 한 글자 씩 데이터를 입력받는다. 하지만, BufferedReader
의 경우 한 줄씩 읽는다. 그렇기 때문에 만약에 대용량의 데이터를 받아야 하는 경우에는 BufferedReader
를 사용하자. 그리고 BufferedReader
는 InputStreamReader
와 함께 사용된다. 꼭 기억하자!
참고로 Kotlin의 경우 데이터를 읽을 때 java와 매우 비슷하게 사용하지만, 동적인 성격을 띄우고 있기 때문에 다음과 같이 코드를 작성하여 데이터를 받을 수 있다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;
fun main(args: Array <String>) {
val br = BufferedReader(InputStreamReader(System.`in`))
// 또는
val sc = Scanner(System.`in`)
}
// 참고로 val은 수정할 일이 없는 변수
// var는 수정할 일이 있는 변수를 의미한다.
// 그니까 변수 할당이 매우 간단한 편이다.
✋🏻 Scanner로 계속 입력 받고 싶을 때
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextInt()) {
System.out.println(sc.nextInt());
}
sc.close();
}
}
위와 같은 방식으로 작성하면 된다. 이때 hasNextInt()
메소드는 입력값이 숫자인지를 ``Boolean`값으로 판별해준다.
␃ txt 파일 읽기
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class ScannerTryCatchDemo {
public static void main(String[] args) {
try {
File file = new File("out.txt"); // 1
Scanner sc = new Scanner(file);
while (sc.hasNextInt()) {
System.out.println(sc.nextInt());
}
sc.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
Scanner로 file 읽을 때 사용하는 방법
1번 부분을 못 읽다고 하면 오류가 나니까. 이걸 catch
하기 위해서 FileNotFoundException
을 사용. 여기서 그런 오류를 print
해서 알려달라고 하는게 바로 printStackTrace()
임.
'Spring > Java' 카테고리의 다른 글
[Java] 초기화와 생성자 (0) | 2021.12.02 |
---|---|
[Java] 유효범위 (0) | 2021.12.02 |
[Java] 클래스 맴버와 인스턴스 맴버 (0) | 2021.12.02 |
[Java] 클래스와 인스턴스 그리고 객체 (0) | 2021.12.02 |
[Java] 객체와 객체지향 프로그래밍 (0) | 2021.11.29 |
- Total
- Today
- Yesterday
- DP
- 프로젝트구조
- 코틀린
- 중첩클래스와 내부클래스
- 비전공개발자
- 프로그래머스
- 보조생성자
- 백준 #숨박꼭질3 #다익스트라 #알고리즘 #비전공개발자 #풀스택 #웹개발 #앱개발 #안드로이드 #python
- 싸피5기
- 백준
- 알고리즘
- 기본생성자
- 추가합격후기
- 백준알고리즘 #BFS #델타이동 #알고리즘풀이 #개발 #안전영역 #풀스택개발자가되고싶습니다. #노력할래요 # 꾸준히 # 화이팅! #비전공개발자
- 일반파라미터
- Java #객체지향 #상속 #생성자 #개념 #비전공개발자 #FullStack을 #향해
- 안드로이드 #안드로이드스튜디오 #Kotlin #앱개발 #안드로이드기초 #비전공개발자 #풀스택개발자 #앱개발자
- 참조연산자
- 구간 합 구하기 4
- 비전공싸피합격
- 카카오
- 안드로이드
- kotlin문법
- Class
- Kotlin
- 생성자
- Java
- 앱개발
- Python
- Programmers #알고리즘 #Python #KAKAOINTERNSHIP #비전공개발자 #불량사용자
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |