Java Seminar 6.

Slides:



Advertisements
Similar presentations
Android Application. 최신버전 안드로이드 SDK 설치 1. SDK 설치 접속.
Advertisements

삼성소프트웨어멤버십 20 th 박희근 ( A n d r o i d.
5 장 조건과 반복 ②. Contents Counting and Looping [while 문 사용 ] Powers of 2 [while 문 사용 ] More Guessing [do 문 사용 ] Election Day [do 문 사용 ] Finding Maximum &
Android Application 데이터베이 스. 데이터베이스 활용하 기  안드로이드에 쓰이는 DBMS 의 이름은 SQLite.  SQLite 는 경량의 임베디드 데이터베이스 엔젠이며, 아이폰, 파이어폭스 등 여 러 곳에서 이미 많이 채택된 검증된 엔진이다. 
Unlocking Android 안드로이드 패키지 (1/2) 2 Unlocking Android 안드로이드 패키지 (2/2) 3.
6 메 뉴.
명품 JAVA Programming 제 3 장 반복문, 배열, 예외처리.
어서와 Java는 처음이지! 제3장선택과 반복.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
CHAP 8. 그래픽.
CHAP 18. 멀티미디어.
CHAP 10. 액티비티와 인텐트.
CHAP 10. 액티비티와 인텐트.
Android Programming 고급위젯
10. 예외 처리.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
IntArray[0] int length 5 intArray 객체 제 3 장 반복문, 배열, 예외처리.
○ 본 강의 자료는 이지스퍼블리싱(주)에서 제공하는 강의 교안입니다.
Contents 학습목표 이벤트를 처리하는 여러 가지 형식과 각 형식의 장단점에 대해 상세하게 연구하고 기본적인 이벤트에 대한 실습을 한다. 사용자의 입력을 자유자재로 처리하기 위해서 반드시 습득해야 하는 중요한 기술 실습. 학습내용 이벤트 핸들러 여러 가지 이벤트.
CHAP 7. 메뉴와 대화상자.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
7장 배열 ②.
어서와 Java는 처음이지! 제4장 배열.
04. 기본 위젯 익히기 제목.
CHAP 4. 이벤트 처리.
CHAP 6. 이벤트 처리.
모바일 서버 만들기 13장 Do it! Node.js 프로그래밍 이지스퍼블리싱 제공 강의 교안 2017/03
제6장 제어(Control) 6.1 구조적 프로그래밍(Structured Programming)
자바란 무엇인가? JDK의 다운로드 및 설치 방법 Hello, Java 프로그램의 작성 자바 프로그램의 작동 원리
윤 홍 란 제3장 클래스와 객체의 사용-1 윤 홍 란
UNIT 07 그림책 만들기 1/2 로봇 SW 콘텐츠 연구원 조용수.
명품 JAVA Essential.
명품 JAVA Programming 제 4 장 클래스와 객체.
Power Java 제4장 자바 프로그래밍 기초.
[INA470] Java Programming Youn-Hee Han
안드로이드 개요 2005년 휴대폰 소프트웨어 개발사인 Android를 구글이 인수 2007년 11월 오픈소스로 공개
Power Java 제10장 배열.
자바 5.0 프로그래밍.
CHAP 11. 액티비티와 인텐트.
CHAP 7. 메뉴와 대화상자.
명품 JAVA Essential.
명품 Java Programming.
Chap07 예외 처리 7.1 예외의 개요 7.2 예외 관련 클래스 7.3 예외 처리.
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
5장 조건과 반복 ①.
CHAP 8. 그래픽.
주소록 프로그램.
CHAP 6. 이벤트 처리.
CHAP 14. 데이터베이스와 환경 설정.
CHAP 13. 네트워크.
02. 처음으로 만드는 안드로이드 애플리케이션 제목.
6장 객체-지향 설계 ①.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
5장 조건과 반복 ②.
제2장 데이터 및 수식.
6장 객체-지향 설계 ①.
어서와 Java는 처음이지! 제4장 배열 IT응용시스템공학과 김형진 교수.
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
WAP Java Seminar
CHAP 3. 첫번째 애플리케이션.
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
CHAP 13. 서비스와 방송 수신자.
[INA470] Java Programming Youn-Hee Han
컴퓨터공학실습(I) 3주 인공지능연구실.
비주얼 프로그래밍 1분반 화/목.
자바 5.0 프로그래밍.
5장 조건과 반복 ①.
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
CHAP 11. 리소스와 보안.
CHAP 5. 메뉴와 대화상자.
Presentation transcript:

Java Seminar 6

Exception

Exception package com.jiharu.main; public class Main { public static void main(String[] args) { int num1 = 10; int num2 = 0; System.out.println(num1 / num2); } 컴퓨터에서 0으로 나누는 작업은 막혀져 있다. 자바에서 0으로 나누는 행위를 시도할 경우 (예외)가 발생하면서 프로세스가 종료된다. 이 때 종료되지 않게 하려면 어떻게 해야하는가.

Exception public class Main { public static void main(String[] args) { int num1 = 10; int num2 = 0; if (num2 != 0) { System.out.println(num1 / num2); } else { System.out.println("나눌 수 없습니다."); } 전통 적인 방법은 예방이다. if문을 사용해서 나누지 못하는 케이스를 제거하자.

Exception package com.jiharu.main; public class Main { public static void main(String[] args) { int num1 = 10; int num2 = 0; try { System.out.println(num1 / num2); } catch (ArithmeticException e) { System.out.println("나눌 수 없습니다."); } try-catch문은 try문안에서 일어나는 Exception(예외)를 감지한다. 해당하는 예외가 일어났을 경우 그 예외에 해당하는 문제를 해결할 수 있다.

Exception package com.jiharu.main; import java.util.Scanner; public class Main { private static Scanner sc; public static void main(String[] args) { sc = new Scanner(System.in); try { System.out.print("첫번째 숫자 입력 : "); int num1 = sc.nextInt(); System.out.print("두번째 숫자 입력 : "); int num2 = sc.nextInt(); System.out.println(num1 / num2); } catch (ArithmeticException e) { System.out.println("나눌 수 없습니다."); } 다른 에러도 일어날 수 있다면 어떻게 해야할까?

만약 둘이상을 한꺼번에 처리하는 방법은 무엇일까? Exception package com.jiharu.main; import java.util.InputMismatchException; import java.util.Scanner; public class Main { private static Scanner sc; public static void main(String[] args) { sc = new Scanner(System.in); try { System.out.print("첫번째 숫자 입력 : "); int num1 = sc.nextInt(); System.out.print("두번째 숫자 입력 : "); int num2 = sc.nextInt(); System.out.println(num1 / num2); } catch (ArithmeticException e) { System.out.println("나눌 수 없습니다."); } catch (InputMismatchException e) { System.out.println("타입 매칭이 되지 않습니다."); } 만약 둘이상을 한꺼번에 처리하는 방법은 무엇일까?

Exception Exception – 최상위 클래스 Exception사용 package com.jiharu.main; import java.util.Scanner; public class Main { private static Scanner sc; public static void main(String[] args) { sc = new Scanner(System.in); try { System.out.print("첫번째 숫자 입력 : "); int num1 = sc.nextInt(); System.out.print("두번째 숫자 입력 : "); int num2 = sc.nextInt(); System.out.println(num1 / num2); } catch (Exception e) { System.out.println("타입 매칭이 되지 않습니다."); }

안드로이드 프로그래밍

안드로이드 프로그래밍

안드로이드 프로그래밍 프로젝트 만들기 새로 만들기 원래 작업 공간

안드로이드 프로그래밍 프로젝트 만들기

안드로이드 프로그래밍 프로젝트 만들기

안드로이드 프로그래밍 프로젝트 만들기

안드로이드 프로그래밍 프로젝트 만들기

안드로이드 프로그래밍 프로젝트 만들기 왼쪽 목록창에서 Project를 눌러주면 목록이 보인다. 그러면 app과 Gradle Scripts가 보인다.

안드로이드 프로그래밍 프로젝트 만들기 총 4개의 구역으로 나뉜다고 생각하자. manifests – 안드로이드의 설정을 지정하는 파일 java – 자바 소스가 들어간다. 로직을 담당. res – xml 설정 파일이 들어간다. view를 담당. gradle – 총 빌드 설정이 들어 가는 파일.

안드로이드 프로그래밍 프로젝트 만들기 Activity(화면)는 안드로이드에 보여줄 메인 화면을 의미한다. Activity는 로직 부분인 java 소스와 view 부분인 xml 소스로 나눠져 있으며 이 둘을 연결해서 사용한다. 관습적으로 제일 메인 화면은 MainActivity로 java파일의 이름을 짓고 activity_main으로 xml파일의 이름을 짓는다. MainActivity.java – 메인 액티비티 로직 activity_main.xml - 메인 엑티비티 뷰

안드로이드 프로그래밍 activity_main.xml

안드로이드 프로그래밍 가상디바이스에서 어플리케이션 실행시키기

안드로이드 프로그래밍 가상디바이스에서 어플리케이션 실행시키기 현재 내가 만들어 놓은 가상 디바이스

옆에 핸드폰 기종을 보지 말고 디스플레이 크기만 맞추면됨 안드로이드 프로그래밍 가상디바이스에서 어플리케이션 실행시키기 옆에 핸드폰 기종을 보지 말고 디스플레이 크기만 맞추면됨

안드로이드 프로그래밍 가상디바이스에서 어플리케이션 실행시키기 안드로이드 운영체제 버전을 선택하자

안드로이드 프로그래밍 가상디바이스에서 어플리케이션 실행시키기 찾는 버전이 없다면 x86 Images나 Other Images를 선택해서 찾아보자.

안드로이드 프로그래밍 가상디바이스에서 어플리케이션 실행시키기 운영 체제의 선택기준 1. 최신 기술을 적용시키고 싶다 : 최신버전을 선택한다. 2. 많은 사람들이 무리없이 사용하게 하고싶다 : 사람들이 많이 쓰는 버전을 고른다.(위의 예로는 Lollipop이 적당.) 3. 내가 쓰고 싶다 : 내가 사용하는 버전을 고른다. 4.적당히 많이 쓰면서 적당히 기능 있는 버전을 사용하고 싶다 : 절반 가량의 사용률이상을 타겟으로 잡을 수 있는 버전을 고른다(위의 예로는 Mashmallow) https://developer.android.com/about/dashboards/index.html?hl=ko에서 버전 접유율 확인 가능

안드로이드 프로그래밍 가상디바이스에서 어플리케이션 실행시키기

안드로이드 프로그래밍 가상디바이스에서 어플리케이션 실행시키기 만든 가상 디바이스를 선택한다.

안드로이드 프로그래밍 가상디바이스에서 어플리케이션 실행시키기

안드로이드 프로그래밍 실제디바이스에서 어플리케이션 실행시키기 실제 디바이스를 연결한다.

안드로이드 프로그래밍 실제디바이스에서 어플리케이션 실행시키기 실제 디바이스가 목록에 뜬다.

안드로이드 프로그래밍 실제디바이스에서 어플리케이션 실행시키기

안드로이드 프로그래밍 실제디바이스에서 어플리케이션 실행시키기

안드로이드 프로그래밍 실제디바이스에서 어플리케이션 실행시키기 디바이스 정보를 눌러준다.

안드로이드 프로그래밍 실제디바이스에서 어플리케이션 실행시키기 빌드번호를 게임하듯 마구 연타해주면 밑에 텍스트가 뜨면서 개발자 모드가 활성화 된다.

안드로이드 프로그래밍 실제디바이스에서 어플리케이션 실행시키기 이제 개발자 옵션으라는 목록이 추가로 생긴다.

안드로이드 프로그래밍 실제디바이스에서 어플리케이션 실행시키기

안드로이드 프로그래밍 실제디바이스에서 어플리케이션 실행시키기 이러한 문제가 생긴다면 케이블을 뺏다가 다시 끼우면 해결된다.

안드로이드 프로그래밍 <?xml version="1.0" encoding="utf-8"?> <!--activity_main.xml--> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.jiharu.testapp.MainActivity"> </LinearLayout> 레이아웃을 Linear로 만들어준다.

안드로이드 프로그래밍 <?xml version="1.0" encoding="utf-8"?> <!--activity_main.xml--> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.jiharu.testapp.MainActivity"> </LinearLayout> 레이아웃을 Linear로 만들어준다.

안드로이드 프로그래밍 2개의 plaintext와 1개의 button, 1개의 textview를 끌어서 만들자. 크기를 가로로는 화면크기로, 세로로는 가능한한 가장 작은 크기로 맞춰라. 마우스로 드래그 하면 된다.

그 중에서 text값을 수정해서 다음과 같이 보이게하자. 안드로이드 프로그래밍 우측에 보면 속성값들이 있다. 그 중에서 text값을 수정해서 다음과 같이 보이게하자.

안드로이드 프로그래밍 버튼은 계산을, 텍스트뷰는 결과:가 출력되게 하자.

안드로이드 프로그래밍 다시 text모드로 보면 위와 같이 나온다. <?xml version="1.0" encoding="utf-8"?> <!--activity_main.xml--> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.jiharu.testapp.MainActivity"> <EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:inputType="textPersonName" /> <EditText android:id="@+id/editText2" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:inputType="textPersonName" /> <Button android:id="@+id/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="계산" /> <TextView android:id="@+id/textView" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="결과:" /> </LinearLayout> 다시 text모드로 보면 위와 같이 나온다.

onCreate안에서 변수를 사용할 경우 final을 붙혀준다. 안드로이드 프로그래밍 //MainActivity.java package com.jiharu.testapp; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final Button btn = (Button) findViewById(R.id.button); final TextView tv = (TextView) findViewById(R.id.textView); final EditText et1 = (EditText) findViewById(R.id.editText); final EditText et2 = (EditText) findViewById(R.id.editText2); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { tv.setText("결과:"+(Integer.parseInt(et1.getText().toString()) +Integer.parseInt(et2.getText().toString()))); } }); } } onCreate안에서 변수를 사용할 경우 final을 붙혀준다.

외부의 필드로 선언할 경우 final선언을 하지 않는다. 안드로이드 프로그래밍 //MainActivity.java package com.jiharu.testapp; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private Button btn = (Button) findViewById(R.id.button); private TextView tv = (TextView) findViewById(R.id.textView); private EditText et1 = (EditText) findViewById(R.id.editText); private EditText et2 = (EditText) findViewById(R.id.editText2); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { tv.setText("결과:"+(Integer.parseInt(et1.getText().toString()) +Integer.parseInt(et2.getText().toString()))); } }); } } 외부의 필드로 선언할 경우 final선언을 하지 않는다.