728x90

 

 

int를 double로 교체 후 에러해결

 

전체 자릿수에서 칸이 남을 시, 공백출력

 

728x90
반응형
728x90

 

JAVA1 - 12.4 직접 컴파일하고 실행하기 : 라이브러리 사

cmd

OkJavaGoInHome.java 입력

import org.opentutorials.iot.Elevator;

→ 의미 : org 밑에 opentutorials 밑에 iot 밑에 Elevator 불러 상태. Elevator 치면 이녀석인 . OkJavaGoInHome.java 같은 디렉토리에 있는 org폴더에 opentutorials폴더에 iot폴더 안에 있는

     - import '불러오다'라는 뜻

     - org부터 iot까지 패키지라고 부름

 

개념정리

Elevator.java 컴파일하면 Elevator.class파일이 생기고, 클래스 파일을 로딩하는 코드가 import org.opentutorials.iot.Elevator; 이것. 이런 절차로 Elevator 사용할 있게 된다

 

-classpath = -cp

 

이렇게 다른 라이브러리를 끌어와 쓸 때 필히 경로지정이 필수인데 이 경로가 변경될 경우 로딩시 에러난다.

어떻게 해결할까?

여기서 찾아주세요 하는게 --class-path 또는 -cp

(현재 디렉토리에서도 찾아야 하니 .이라고 치고, 윈도에서는 ;세미콜론으로 구분하고 ,리눅스에서는 :콜론)

 - 새경로 지정 & 컴파일 명령어 : javac -cp ".;폴더명" 파일명

 - ex) javac -cp ".;lib" OkJavaGoInHome.java

 

위의 경우 lib폴더 같은 경로에 있으면 찾아지나 lib폴더 밑에있다면 에러뜬다. lib 안에 있다고 명시적으로 컴퓨터한테 알려줘야한다

 - java -cp "lib" OkJavaGoInHome : 명시적으로 "lib"이라고 해줘야 lib에서만 찾게됨. 같은 디렉토리에서는 찾지않음

 - java -cp ".;lib" OkJavaGoInHome : 현재디렉토리라는 의미의 .; 추가

 

 

※ 소프트웨어는 혼자 만드는게 아닌 다른 사람들이 만든 라이브러리들 이용해서 나의 소프트웨어를 만들어가는 것이기에 다른 사람들이 만든 라이브러리 살펴보는 것은 견문을 넓히는 중요한

 

 

 


 

 

JAVA1 - 12.5 직접 컴파일하고 실행하기 : 입력과 출력

컴파일시 입력값을 줘서 입력값에 따라서 다르게 동작하는 프로그램을 어떻게 실행시킬지 알아볼

 

javac OkJavaGoInHomeInput.java 컴파일하면 OkJavaGoInHome.java class파일이 생기고,

파일이 쓰는 다른 class파일들도 자동으로 컴파일 된다

 

args 프로그램의 입력값을 받는 녀석

args 같아야함

들어오는 값은 args[0] 두번째 값은 args[1] 써서 가져올 있음

 

*첫째값과 두번째값을 주는 방법

첫번째값, 두번째값 표시는 띄어쓰기

cmd 명령어 : java OkJavaGoInHomeInput "Java APT 507" 15.0

                                                        (첫번째값)    (두번째값)

메커니즘

첫번째값 Java APT 507 args[0]으로 들어가서 String id String타입 id값이 되고,

두번째값 15.0 args[1] 들어가서 String bright String타입 bright 값이 되는

 

그럼 id bright 들어가 있는 아래의 Elevator(id), Security(Id) 등에 변수로 한번에 적용되는 메커니즘이다

 

 

cmd에서 인수(args) 넣을 첫번째값,두번째 값을 아래처럼 바꾸면 된다

 

 

 

 

 

728x90
반응형
728x90

 

JAVA1 - 12.1. 직접 컴파일하고 실행하기 : 소개

이클립스 같은 개발도구를 이용하지 않고 자바로 만든 프로그램을 컴파일하고 실행하는 법을 배우려한다

(cmd에서 자바사용법 배우기)

 

<중요 3가지>

더보기

1.자바확장자가 붙은 소스코드를 클래스확장자가 붙은 실행파일로 바꾸는것(Compile)

2.클래스확장자가 붙은 파일을 실행하는것(Run)

3.입력값을 주는 . 입력값에 따라서 다르게 동작하는 출력값을 만드는 (Input)

 

<12챕터에서 >

1. Program.java파일을 컴파일해서 실행가능 파일인 Program.class 만들 것임. 그리고 Program.class 자바로 실행할 예정

2. OkJavaGoinhome.java 컴파일해서 .class 파일만들고 실행할 예정

     (위의 ok파일을 실행하기 위해서는 org폴더에 Elevator 자바를 로딩해야만 해야함)

3. OkJavaGoinhomeInput.java 이전 것과 같은데 하나 다른점은, args라는 변수를 통해서 사용자가 입력한 정보를 가져와서 출력해주는 그런 프로그램. 실행할 어떻게 입력값을 받을 있는가 하는 이슈가 있는

 


 

JAVA1 - 12.2 직접 컴파일하고 실행하기 : 실행환경 살펴보기

의미와 순서 이해에 방점을

 

▷ cmd에서 javac 파일명 입력하면 컴파일 가능해짐

 

*용어

bin = binary = 실행파일

 

▷ C드라이브-Program Files-jdk폴더-bin-java.exe 자바를 실행했을 실행되는 파일이 이녀석

(jdk폴더 찾아서 bin 들어갈 )

 

▷ cmd java라고 입력하고 명령을 내렸을 , 명령어가 어디에 있건간에 실행될 있는 것은 path라고 부르는 환경변수 때문

 

※ 환경변수(path) 확인방법

내컴퓨터-속성-고급시스템설정-고급탭 환경변수

 

 

▷ cmd java라고 입력하고 명령을 내렸을 , OS 현재 디렉토리에 java 있는지 보고 없으면 path설정된 경로를 하나씩 보고 없으면 파일을 찾을 없다고 에러를 띄운다

▷java 실행시켰을 에러가 뜨면 환경변수(path) 설정해주면 된다

 

 


 

JAVA1 - 12.3 직접 컴파일하고 실행하기 : 컴파일과 실행하기

cmd에서 programing 폴더가 있는 파일 경로로 옮기기 위하여

cd 폴더경로지정

 

dir쳐서 programing.java 있는지 확인

javac 엔터

 

javac Program.java

dir해보면 Program.java파일의 .class파일이 생성된 것을 있음

 

*에러가 났다면?

javac -cp "." Program.java 엔터

-cp : classpath

 

java Program 명령어 입력하면, 현재 디렉토리에 Program.class파일을 찾아보고 있다면 실행시킴 (에러 , java -cp "." Program 쳐볼 )

 

 

java Program 입력의 의미

자바에게 Program.class라는 파일을 찾아서 실행해 명령하면, 프로그램은 지정된 파일을 찾고 파일에서 main 찾는다. 그리고 main 안에 {} 안에 있는 코드를 순차적으로 실행하고 종료하도록 약속되어있음  (*main 메소드)

아래의 Prgram 클래스이고, 클래스를 만들어서 클래스 이름과 똑같은 자바확장자를 만들면 컴파일하고 실행시켜서 우리가 원하는 프로그램이 만들어지게

 

 

728x90
반응형
728x90

 

JAVA1 - 11.1. 입력과 출력

프로그램은 들어오는 정보인 입력을 처리해서 출력을 만들어내는

우리가 사용하는 프로그램의 입력값을 어떻게 주는지 알아볼

다양한 것들이 입력값이 될 수 있는데

 

Argument : 프로그램을 실행할 어떤 텍스트 정보를 주는

File : 어떤 파일의 내용을 읽어서 입력되는 경우, 파일의 내용이 입력값

Network : 웹사이트 이용으로 정보를 받아서 쓰는 것도 입력

Audio : 말을 해서 프로그램이 이걸 알아듣는 경우 ex) iPhone Siri

Program : 다른 프로그램이 실행한 출력결과를 입력 받아 쓰는 경우

 

 

id값을 프로그램 실행시마다 바꾸는건 상당히 피곤한

사용자가 텍스트값을 입력해서 세팅할 있게 있을까?

검색 : java popup input text swing

JOptionpane 기능 쓸려면 임포트

 

복수 데이터를 입력하고 싶다면?

JOptionpane 가진 변수 하나더 만들어서 두번 받기

String id = JOptionPane.showInputDialog("Enter a ID");

String bright = JOptionPane.showInputDialog("Enter a Bright level");

 

 

import org.opentutorials.iot.Elevator;
import org.opentutorials.iot.Security;


// Elevator call
Elevator myElevator = new Elevator("JAVA APT 507");
myElevator.callForup(1);


// Security off
Security mySecurity = new Security("JAVA APT 507"); // 누구의 시큐리티인지 알리기해 ()작성
mySecurity.off();


// Light on
Lighting hallLamp = new Lighting("JAVA APT 507 / Hall Lamp"); // 자바 아파트 507호의 홀램프라는 의미
hallLamp.on();


Lighting floorLamp = new Lighting("JAVA APT 507 / floor Lamp");
floorLamp.on();


DimmingLights moodLamp = new DimmingLights(id+" moodLamp");
moodLamp.setBright(Double.parseDouble(bright)); //setBright()가 실수만 받아서 str을 double로 컨버팅하는 .parseDouble() 메소드사용
moodLampe.on();

 

 


 

JAVA1 - 11.2 . 입력과 출력 : arguments & parameter

 

parameter = 매개변수

args = arguments = 인자

 

args 얘도 변수

프로그램과 프로그램을 사용하는 사람 사이에 값을 매개해준다고 해서 매개변수라고 한다

 

*개념

arguments 값이 public static void main(String[] args) { 부분의 args 들어간다

위의 String[](대괄호가 붙은 문자열) 문자열로만 이루어져 있는 배열이라고 하는 데이터

(배열은 추후 배울 예정이니 지금은 스킵)

 

핵심은 args 사용자가 입력한 값이 들어올 것이고, {} 안에서는 args 사용자가 입력한 값이다

args에서 첫번째 값은 0이다. (프로그램에서는 0부터 시작하는게 )

두번째는 1

 

 

자바에서 입력값을 받는 방법은

JOptionPane.showInputDialog("");

같은 방법도 있지만 일반적으로는 인자(args) 사용한다

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형
728x90

 

JAVA1 - 10. 디버거

 

<용어설명>

버그 bug : 의도치 않은 문제가 발생하는

디버그 debug

디버깅 debugging : 버그를 잡는 행위를 디버깅이라함

디버거 degugger : 디버깅할 사용하는 도구를 디버거

 

디버깅 할려면 프로그램을 멈춰야함

breakpoint : 멈추고 싶은 지정

breakpointer : 브레이크포인트의

 


 

이클립스 코드수 UI 더블클릭으로 생성 & 삭제

디버깅 실행 : 화면 상단 벌레버튼

 

누르고나면 perspective(우측상단) 벌레 아이콘 생기는데 디버깅 하기 좋게 화면이 바뀌는 템플릿 기능 같은

  - 화면 구성이 바뀌면서 어떤 변수의 값이 뭔지 하나하나 체크하기 쉽게 보여줌

 

 

 

좌측 상단에 디버깅할 필요한 커맨드들이고, 우측은 변수명과 값을 직관적으로 보여주는 UI

 

좌측상단 메뉴

step over 다음 줄로 넘어가서 디버깅

step into 해당 메소드가 어떻게 이루어있는지 자세히 있음

step return 스텝인투에서 밖으로 나가고 싶을 사용

terminate 디버깅 종료

 

우측상단 도형모양 누르면 원래 코딩하던 콘솔창으로 되돌아옴

728x90
반응형
728x90

JAVA1 9.1. 프로그래밍이란 무엇인가?

 

Programming 사전 의미

음악회에서 공연될 곡들의 목록대로 순차적으로 연주되는 것처럼, 시간의 순서에 따라서 공연이 진행되는 것들을 프로그램이라고 칭한 듯함.  이후로 시간의 순서에 따라서 어떤 것들이 일어나는 것을 프로그램이라고 부르고 있다.

 

어떤 일을 하기 위해서 필요한 각각의 작업들이 시간의 순서에 따라서 실행되게 하는 것을 automation 자동화를   있게 되는 

 

프로그래밍을 하는 이유  자동화처리를 하기 위함

그리고  자동화 하는 방법을 배우는 시간이  강의

 

 

 

 

JAVA1 9.2. 프로그램 만들기- IoT 라이브러리 설치하기

 

프로그래밍시에 하나부터 열까지  만들지 않는다

누군가 만들어 놓은 프로그램을 사용하여  빠르게   쉽게 만드는데 누군가 만들어 놓은 프로그램을 라이브러리라한다

 

※ 다른 사람이 만든 코드를 나의 프로젝트에 추가시키는 방법  

가장 쉬운 방법은 해당 폴더를 나의 프로젝트 폴더에 포함시키는 

추가하고 나면, 이클립스 패키지 익스플로러에 보인다

 

 

JAVA1 9.3. IOT 프로그램 만들기

 

다른 사람이 만든 코드(라이브러리) 사용하는 방법

 

org.opentutorials.iot.Elevator

org 패키지 밑에 opentorials 패키지 밑에 iot 패키지 밑에 Elevator 호출할려고함.

 

Elevator라는 클래스를 불러올려고 한다

다쓰면 기니까 쓸이기 위해 import 사용해보자

import org.opentutorials.iot.Elevator; 

public class practice02 {
	public static void main(String[] args) {
    
    }
}

import org.opentutorials.iot.Elevator; 라고 public class 클래스명 위에 써두면

class 코드 안에 Elevator 써도 

 

 

// Elevator call

Elevator myElevator = new Elevator("JAVA APT 507");

Elevator라는 데이터타입의 변수명myElevator가진 변수

myElevator.callForup(1); // 1층으로 엘리베이터 보내라고 명령

import org.opentutorials.iot.Elevator; 

public class practice02 {
	public static void main(String[] args) {
    
	// Elevator call
	Elevator myElevator = new Elevator("JAVA APT 507"); // Elevator라는 데이터타입의 변수명myElevator가진 변수
	myElevator.callForup(1); // 1층으로 엘리베이터 보내라고 명령
    }
}

 

// Security off

엘베와 마찬가지로 코드  위에 임포트

import org.opentutorials.iot.Security;

Security mySecurity = new Security("JAVA APT 507"); // 누구의 시큐리티인지 알리기해 ()작성

mySecurity.off(); // 메소드

 

// Light on

*Light라고 쓰면 이클립스가 추천단어를 보여주는데 org….이거 누르면 알아서 위에 import 추가해주고 Lighting 쓰게 해준다.

Lighting hallLamp = new Lighting("JAVA APT 507 / Hall Lamp"); // 자바 아파트 507호의 홀램프라는 의미

hallLamp.on();

 

Lighting floorLamp = new Lighting("JAVA APT 507 / floor Lamp");

floorLamp.on();

 

 

 관리가 용이한 코드

String id = "JAVA APT 507";  넣어서 한번에 변수로 관리

 

 

728x90
반응형
728x90

 

JAVA1 8.1. 변수의 정의

 

자연수 : 1,2,3,4…

정수 integer

int a = 1;

int a = 1.1; // 에러

 

real number 실수

 double b = 1.1;

 

변수 지정시 데이터 타입 지정해주고 그에 따른 값과 연산법을 지정해주어야 한다

값을 넣을 때는 까다롭지만 지정된 데이터타입이 있기에 그게 아닌 정보가 들어간다면 아예 컴파일이 안되므로, 반대로 안에 들어간 값이 성공했다면 데이터는 타입 확인 필요없이 반드시 정수나 문자열 같은거라는걸 확신가능

 그래서 꺼낼 때마다 확인할 필요가 없는 편리함이 있다

 

 

 

JAVA1 8.2. 변수의 효용

 

System.out.println("Hello, egoing… egoing… bye");

전에 .replace("" ,"")으로 대체하는 법을 배웠지만 변수를 이용하는게 좋다

 

String name = "egoing";

System.out.println("Hello, "+name+"… "+name+"… bye"); // 위의 str name변수가 들어감

 name 변수를 하나 바꾸면 println() 들어가있는 모든 name 같이 바뀌므로 아주아주 효율적으로 변함

코드를 나만 보는게 아닌 협업을 하기에 내가 아닌 다른 사람이 보아도 해당 코드가 뭔지 빠르게 있도록 코드를 짜는 것이 정말 중요

 

System.out.println(10); // 이렇게하면 10 출력되겠지만 이것의 데이터타입이나 세부정보를 다른 사람은 알기 어렵다. 아래처럼 하는걸 추천

     double VAT = 10.0;

     System.out.println(VAT);

 

 

 

 

 

JAVA1 8.2. 데이터 타입의 변환(casting)

 

double a = 1.1;

double b = 1; // 문제없음. 1.0으로 출력

System.out.println(b);

정수integer 1 실수로 컨버팅했지만 에러도 없고 잃어버리는 값이 없다

 

 

※ 에러메시지 확인 & 해결방법 보는  

 

 

위의 스샷에서 double 1.1 int 강제 변환 시켜서 1.0 되기 때문에 손실이 일어난다. 손실이 일어나기에 자동적으로 변환해주지 않음

 

double b=1;              // 자동 캐스팅

double b2 = (double) 1; // 수동 캐스팅. 명시적으로 바꿔준 것

둘은 같은 코드

 

*int to str 캐스팅 검색

String f = Integer.toString(1);  // 정수에서 문자열로 변환

 

.getClass() : 해당 변수가 어떤 타입인지 알려줌(파이썬의 type()함수 역할)

System.out.println(b2.getClass());

 

 

 

 

 

728x90
반응형
728x90

 

 

 

JAVA1 6.1. 데이터와 연산

 

데이터의 종류(type) 있고 이와 연산이 관련있다

자바에서 어떤 데이터 타입들이 있고 각각 데이터들마다 어떤 연산 방법들이 존재하는지 알아보자

 

 

 

JAVA1 6.2. 데이터 타입

프로젝트 생성

sysout하고 ctrl+space하면 출력코드를 풀로 자동채워준다

System.out.println();

 

숫자 number

문자 String

"" 묶으면 숫자도 문자로 바뀜

ex) System.out.println("6"); // 데이터타입이 str 6

 

System.out.println("1111".length()); // 문자열의 길이를 알려주는 .length()

 

프로그램에서는 데이터별로 타입이 있고 그에 정해진 연산법이 있어서 구분을 해야한다

 

실력을 쌓고 스킬을 올린다는 것은 크게 두가지의 흐름을 갖는다

1.내가 지금 다루는 시스템에는 어떤 종류의 데이터타입이 존재하는가를 알아가는

2.각각의 데이터 타입별로 어떤 연산 방법들이 존재하는가

 

둘을 통해 폭발적인 퍼포먼스가 발생

 

 

 

 

JAVA1 6.3. 숫자와 연산

클래스 생성 : 우클릭 new-class

 

사칙연산 : + =+- * / 이들을 연산자(operator)라고 부름

 

System.out.println(Math.); 에서 Math.까지 쓰면 이클립스에서는 Math.에서 있는 여러가지 연산방법들을 보여주니 적극 활용할

 

Math.PI : 3.14 blahblah

Math.floor() : () 값을 내림하는 메소드

Math.ceil() :   () 값을 올림하는 메소드

ex) System.out.println(Math.ceil(a));

 

 

 

JAVA1 6.4. 문자열의 표현

큰따옴표와 작은 따옴표의 차이를 알아둘 필요가 있다

다른 언어에서는 '' 감싸던 "" 감싸던 호환이 되지만 자바에서는 에러

'작은 따옴표 Character 나타내며 한글자만

" 따옴표 String 나타내며, 복수의 글자. 한글자도 가능

 

 

줄바꿈하기 : 문자열 사이에 \n 넣기

  - \n : newline이라는 의미

" 출력하고 싶을 경우 \ 붙이기

 ex) hello "world" 출력하고 싶다면

        System.out.println("hello \"world\"");

 

 

이스케이프코드(escape) : \

 

 

 

JAVA1 6.5. 문자열 다루기

.length() : 문자열 개수 세기

.replace( , ) : 문자 바꾸기

 

System.out.println("Hello World".length());  // 결과값 11

System.out.println("Hello, leezhe leezhe leezhe bye".replace("leezche", "egoing"));

System.out.println("Hello, [[[name]]] bye".replace("[[[name]]]", "Mr")); // 대량 이메일 보낼 있음

 

 

 

 

 

 

JAVA1 7. 작심삼일 공학

 

선생님인 이고잉님이 공부를 어떻게 생각하고 수업을 어떻게 만들었는지 전략 소개

1)학생일 전략

낯선 분야를 공부할 작심삼일이 오면, 순간을 '나는 의지가 박약해'라고 생각하지 않고 대신 '공부를 그만하라는 뇌의 명령이다'라고 생각하고 과감하게 진도를 나가지 않고 지금까지 배운 것과 삶의 문제의 접점을 찾기 위해 노력함. 배운 것만으로 여러가지로 쓸모 있다고 뇌에게 증명하기 위해 여기저기 뛰어다님

뇌의 흥분도가 점점 고조되고 다시 공부하라는 명령이 떨어짐. 뇌를 이기는 장사는 없다

 

 

2)선생님일 때의 전략

중도하차하면 아무 것도 없는 무능함에 빠지고, 완주하면 무엇부터 해야될지 모르는 무기력함에 빠진다. 요새 강의를 만들 때는 참여자가 뇌의 명령으로 공부를 그만두어도 지금까지 배운 것만으로도 자신의 문제를 해결할 있는 수업을 만들기 위해 노력. 또한 다시 공부하라는 명령이 뇌에서 떨어지면 다시 공부를 시작할 있도록 노력함

우리가 배우는 수업자체는 하나하나가 그것 자체로 쓸모 있는 수업. 언제든지 공부는 그만하고 일을하고 언제든지 일을 그만하고 공부를 해라.

 

 

728x90
반응형
728x90

 

4.1. 실행 - HelloWorld

JRE (Java Runtime Envirorment)

 - 자바 실행환경

 - 자바버젼 지정가능

 

public class 클래스명(파일명) {  // 클래스명과 파일명이 같아야 자바가 찾을  있다

public static void main(String[] args) {

// 파일을 실행시키면 자바는 파일명과 같은 클래스명을 찾고 main이라는 약속된 이름의 메소드를 찾는다.

그리고 중괄호 안에 있는 코드를 실행하기로 약속되어 있음

System.out.println("Hello World!!");

    }

}

 

 

JAVA1 - 4.1.A/S 강의 - Editor dose not contain a main type 오류가 발생할 때

Editor dose not contain a main type 에러메세지 발생원인은 프로젝트 생성시에 Project layout에서

Use project folder as root for sources and class files 체크를 안했기 때문

 

 

<자바로 할 수 있는 일 3가지 >

 - 데스크톱 어플리케이션, IoT, 안드로이드

 

5.a 데스크톱 애플리케이션 만들기

ex)마인크래프트

 

 

5.b 사물을 자바로 제어하기

 

Iot(Internet of Things) 사물인터넷

라즈베리파이 : 저렴하고 적은 컴퓨터

몇번핀(GPIO) 전기를 흐르게해서 LED 수도 있고, 움일 수도 있다

 

5.c안드로이드 애플리케이션 만들기

 

 

출처: <https://www.youtube.com/watch?v=pUqRAHxpxjM&list=PLuHgQVnccGMAIluRRVsC1e79ri-dwnBmR&index=7>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형
728x90

맨 왼쪽부터 동그라미에 빨간색 x표시 뜬다. 컴파일시 에러난다는 의미이며,
위에를 클릭해보면 스샷처럼 오른쪽에 툴팁으로 어떤 에러가 떴는지 나오며
흰색 배너에 해결책이 제시되고, 그 오른쪽에 노란 배너에 해당 선택지들이 실제로 어떻게 코드가 바뀌는지
미리보여주기가 뜬다
int에 쳐진 위쪽 동그라미 안에 보면 옆은 빨간색으로 밑줄이 쳐져 있는데 이 또한 에러발생을 알려주는 표시이다
다만 주석해서 왼쪽에 x표시가 안뜬 것은 컴파일시에 문제가 없기 때문.


에러는 개발자에게 항상 맞닥드리는 부분이니 개발자가 되기 위해 공부를 막 시작했다면 꼭꼭 숙지해주자!!


728x90
반응형

+ Recent posts