자료 구조
- Queue
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
32
33
34
35
36
37
38
39
40
|
public class Message {
private String command;
private String to;
public Message(String command, String to) {
this.command=command;
this.to=to;
}
public String getCommand() {
return command;
}
public String getTo() {
return to;
}
}
import java.util.LinkedList;
import java.util.Queue;
public class QueueEx1 {
public static void main(String[] args) {
Queue<Message> messageQ = new LinkedList<Message>(); //다형성
messageQ.offer(new Message("이메일","홍길동")); //Stack의 push() 기능
messageQ.offer(new Message("SMS","김철수"));
messageQ.offer(new Message("카카오톡","이영희"));
while(!messageQ.isEmpty()) {
Message msg = messageQ.poll();
System.out.println(msg.getCommand()+"을(를) "+msg.getTo()+"에게 보냄");
}
}
}
|
cs |
//
이메일을(를) 홍길동에게 보냄
SMS을(를) 김철수에게 보냄
카카오톡을(를) 이영희에게 보냄
=> Message에 생성자에 println 작성하는 실수로 앞에 3줄 공백생겼었음
=> 출력 전 객체 생성할때 공백 3개 먼저 만들어낸 것
입출력
1. 파일 입력 = 저장되어 있는 파일을 읽어오는 기능
2. 파일 출력 = 저장장치에 내용 작성하는 기능
출발지(키보드, 파일, 프로그램) → 입력 스트림 → 프로그램 → 출력 스트림 → 도착지(모니터, 파일, 프로그램)
=> byte / char 기반 스트림으로 나뉨
- FileInputStream
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
32
33
|
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class FileInputEx1 {
public static void main(String[] args) {
File dir = new File("C:/hk/javaproject/file"); //java.io.File클래스
File file = new File("C:/hk/javaproject/file/info.txt");
/*if (dir.exists()==true) { //폴더 존재 여부
System.out.println("이미 폴더가 존재합니다");
}else {
dir.mkdir();
System.out.println("새로운 폴더가 생성되었습니다");
}*/
try {
FileInputStream fileis = new FileInputStream(file); //byte로 파일 읽어오기(=open)
byte[] readBytes = new byte[fileis.available()];
//[객체.available] : file 전체 문자 읽어옴 / [100] : 100byte만 읽어옴 => 바이트 배열에 저장 fileis.read(readBytes); //입력스트림 바이트들 읽고, int타입으로 리턴
String str = new String(readBytes);
System.out.println(str); //출력 깨지면 한글 인코딩 방식 때문 (ANSI로 변환)
fileis.close(); //파일 open(읽어오기)했으면 close 필수
} catch (IOException e) { //모든 입출력 관련
System.out.println("파일을 읽을 수 없습니다");
}
}
}
//
전체 내용 출력
|
cs |
- FileOutputStream
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputEx1 {
public static void main(String[] args) {
File savefile = new File("C:/hk/javaproject/file/save.txt");
//save.txt를 savefile 클래스 객체로 생성 try { //입출력은 try catch 의무
FileOutputStream fileos = new FileOutputStream(savefile);
String memo = "이 내용이 저장됩니다. 이 파일 저장 수업 끝나면 자바 구현 실습 시작.";
fileos.write(memo.getBytes()); //작성할 내용 => byte로 저장됨
fileos.close();
System.out.println("save.txt 파일이 저장되었습니다.");
} catch (IOException e) {
System.out.println("파일을 저장할 수 없습니다.");
}
}
}
|
cs |
안드로이드 구현
package com.hk.numbergame;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
//객체, 변수 선언
EditText edtNumber;
Button btnGameStart, btnConfirm;
TextView tvHint;
ImageView imgGame;
int comNum;
int count;
int myNum;
@Override
protected void onCreate(Bundle savedInstanceState) { //메인 메소드
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//선언된 객체를 xml 위젯과 연결 (casting=강제타입변환) //xml -> java
edtNumber = findViewById(R.id.edtNumber);
btnGameStart = findViewById(R.id.btnGameStart);
btnConfirm = findViewById(R.id.btnConfirm);
tvHint = findViewById(R.id.tvHint);
imgGame = findViewById(R.id.imgGame);
//메서드로 기능 처리
//게임시작 버튼 메서드
btnGameStart.setOnClickListener(new View.OnClickListener() { //온클릭리스너 인터페이스
@Override
public void onClick(View v) { //추상메서드 오버라이드
comNum = (int)(Math.random()*100)+1;
count=0;
}
});
//확인 버튼 메서드
btnConfirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
count++;
myNum = Integer.parseInt(edtNumber.getText().toString());
if (myNum>comNum){
tvHint.setText("더 작은 숫자를 넣어봐요");
imgGame.setImageResource(R.drawable.wrong);
}else if (myNum<comNum){
tvHint.setText("더 큰 숫자를 넣어봐요");
imgGame.setImageResource(R.drawable.wrong);
}else {
tvHint.setText("정답! ("+count+")");
imgGame.setImageResource(R.drawable.good);
}
}
});
}//OnCreate
}
=>
match_content =: 화면 전체
wrap_content : 들어갈만큼만 한정적 크기
※단위
Px(픽셀) : 해상도 낮을 수록 확대돼 보임 (1900->800일 때 찍을 수 있는 점 적어짐)
dp(밀도 단위) : 해상도와 상관 X, 안드로이드 디벨로퍼에서 사용
'Programming > 국비학원' 카테고리의 다른 글
220525 - 안드로이드 구현 실습 (멀티 액티비티, 성적 입력 계산, 투표) (0) | 2022.05.30 |
---|---|
220524 - 안드로이드 구현 실습 (0) | 2022.05.25 |
220518 - 람다식, 컬렉션 프레임워크, 자료 구조 (0) | 2022.05.19 |
220517 - 멀티스레드(상태 제어, 데몬스레드), 제네릭(제네릭 타입, 멀티타입파라미터, 제네릭 메소드, 상속 및 구현), 람다식 (0) | 2022.05.18 |
220516 - API 확인문제, 멀티 스레드(스레드 생성, 우선순위, 동기화 메소드, 상태) (0) | 2022.05.17 |