Scanner 클래스로 -1이 입력될 때까지
양의 정수를 입력 받아 저장하고
검색하여 가장 큰 수를 출력하는
프로그램을 작성하라.
정수(-1이 입력될 때까지)>> 10 6 22 6 88 77 -1
가장 큰 수는 88
List<Integer> list = new LinkedList<>();
Scanner sc = new Scanner(System.in);
System.out.println("정수 (-1이 입력 될때까지)>>");
while(true) {
try {
int num = sc.nextInt();
if(num == -1)
break;
list.add(num);
} catch (Exception e) {
System.out.println("잘못");
sc = new Scanner(System.in);
continue;
}
}
int max = 0;
for(int num : list) {
if(num > max)
max = num;
}
System.out.println(list);
System.out.println("가장 큰 수는:"+max);
- Map (Mapping의 약자)
- 컬랙션 프레임워크의 상속을 받지 않음 (add 대신 put)
- 키 / 밸류 방식 (예시 : 출석부)
순차적으로 나오도록 돌리시오
TreeMap<Integer, String> map = new TreeMap<>();
map.put(45, "Brown");
map.put(37, "James");
map.put(23, "Martin");
45 Brown
37 James
23 Martin
for (Map.Entry<Integer, String> itr : map.entrySet()) {
System.out.println(itr.getKey() + " " + itr.getValue());
Treemap은 순서를 지정해서 저장가능
Hashmap은 순서를 지정할수 없지만 더 빠르다
IO스트림(인풋/아웃풋)
1.8 버전부터 그냥 스트림과 다른 I/O 스트림이 나옴
인풋 입력(read) / 아웃풋 출력(write)
빨대의 원리 (단방향)
실무에선 main에 throws 하지 말고(테스트용) try catch로
1.7부터 try 안에 ()괄호 가능
읽고 쓰기는 1바이트씩 되는 원리
buffered 보조스트림 달것:
===============
대상 파일: F:\a.java
사본 이름: F:\b.java
카피 되었습니다.
Scanner sc = new Scanner(System.in);
System.out.print("대상 파일: ");
String src = sc.nextLine();
System.out.print("사본 이름: ");
String dst = sc.nextLine();
try(BufferedInputStream in =
new BufferedInputStream(new FileInputStream(src)) ;
BufferedOutputStream out =
new BufferedOutputStream(new FileOutputStream(dst))) {
int data;
int count = 1;
while(true) {
data = in.read();
if(data == -1)
break;
out.write(data);
System.out.println("횟수"+count++);
}
}
catch(IOException e) {
e.printStackTrace();
}
System.out.println("카피 되었습니다");
try(BufferedWriter writer = Files.newBufferedWriter(file)) { //여기 바로 객체생성해버림
writer.write('A’);
writer.write('Z'); //try 구문을 빠져나갈때 다음문장을 안정적으로 자동실행 writer.close(); 클로즈 내부에서 자동 실행
}
catch(IOException e) {
e.printStackTrace();
}
1.7 버전부터 제공되는 try catch finally의 업그레이드 버전
try안에 resources(=객체)가 들어간다.
try-with-resources 기반의 오픈 및 종료 대상이 되기 위한 조건
2의 10승은 1024
버퍼링 : 미리 메모리에 채워 놓는것
(밝은 회색 부분)
BufferdOutputStream은 반드시 달아야 한다.